精华内容
下载资源
问答
  • MySQL创建数据库和创建数据表

    万次阅读 多人点赞 2019-10-20 23:44:40
    这之前,需要先安装好 MySQL ,然后创建好数据库、数据表、操作用户。 一、数据库操作语言 数据库操作时,需要使用专门的数据库操作规则和语法,这个语法就是SQL(Structured Query Language) 结构化查询语言。...

    MySQL 创建数据库和创建数据表

    MySQL 是最常用的数据库,在数据库操作中,基本都是增删改查操作,简称CRUD。

    在这之前,需要先安装好 MySQL ,然后创建好数据库、数据表、操作用户。

    一、数据库操作语言

    数据库在操作时,需要使用专门的数据库操作规则和语法,这个语法就是 SQL(Structured Query Language) 结构化查询语言。

    SQL 的主要功能是和数据库建立连接,进行增删改查的操作。SQL是关系型数据库管理系统的标准语言。

    SQL 语言的作用:

    1. 数据定义语言 DDL(Data Definition Language) 。用于创建数据库,数据表。

    2. 数据操作语言 DML(Data Manipulation Language) 。用于从数据表中插入、修改、删除数据。

    3. 数据查询语言 DQL(Data Query Language) 。用于从数据表中查询数据。

    4. 数据控制语言 DCL(Data Control Language) 。用来设置或修改数据库用户或角色的权限。

    使用 SQL 操作数据库时,所有的 SQL 语句都以分号结束。(切换数据库时可以不用分号)

    在 SQL 语句中,不区分大小写,编写 SQL 语句时可以根据情况用大小写的区别来增加可读性。

    二、创建数据库

    1. 连接 MySQL

    输入 mysql -u root -p 命令,回车,然后输入 MySQL 的密码(不要忘记了密码),再回车,就连接上 MySQL 了。

    mysql -u root -p

    最初,都是使用 root 用户登录,工作中如果一直用 root 用户登录,因为权限太大,风险是很大的,所以等创建好权限适合的用户后,就不要经常登录 root 用户了。

    2. 查看当前的数据库

    使用 show databases; 查看当前安装的 MySQL 中有哪些数据库。

    show databases;

    刚安装 MySQL 时,默认有四个数据库,information_schema,mysql,perfomance_schema,sys 。通常情况下,我们不会直接使用这四个数据库,但千万不要把这四个数据库删了,否则会带来很多不必要的麻烦。如果不小心删了,建议是重新安装 MySQL ,在重装之前把自己的数据迁移出来备份好,或者从其他服务器上迁移一个相同的数据库过来。

    3. 创建数据库

    使用 create database 数据库名; 创建数据库。

    create database MyDB_one;

    创建数据库成功后,数据库的数量变成了5个,多了刚才创建的 MyDB_one 。

    4. 创建数据库时设置字符编码

    使用 create database 数据库名 character set utf8; 创建数据库并设置数据库的字符编码。

    create database MyDB_two character set utf8;
    

    直接创建的数据库,数据库的编码方式是 MySQL 默认的编码方式 latin1 (单字节编码) ,通常我们会在数据库中存放中文数据,所以最好把数据库的编码方式设置成 utf-8 ,这样中文才能正常显示。

    create database MyDB_three charset utf8;

    character set 可以缩写成 charset ,效果是一样的。

    5. 查看和显示数据库的编码方式

    使用 show create database 数据库名; 显示数据库的创建信息。

    show create database MyDB_one;
    show create database MyDB_two;

    如果不知道一个数据库的编码方式是什么,可以使用 show create database 数据库名 来查看数据库的编码方式。可以看到刚才创建的 MyDB_one 的编码方式是 MySQL 的默认编码 latin1 ,MyDB_two 的编码方式是 utf-8 。

    当然,这种方式不能在创建的同时显示,只能查看一个已经存在的数据库的编码方式。

    6. 使用 alter database 数据库名 character set utf8; 修改数据库编码

    alter database MyDB_one character set utf8;

    如果一个数据库的编码方式不符合使用需求,可以进行修改。刚才创建的 MyDB_one 经过修改后,编码方式也变成了 utf-8 。

    7. 进入或切换数据库

    使用 use 数据库名 进入或切换数据库。

    use MyDB_one
    use MyDB_two;

    刚连接上 MySQL 时,没有处于任何一个数据库中,如果要使用某一个数据库,就需要进入到这个数据库中。

    use 数据库名 这个命令后面的分号可以省略,这是 SQL 语句中唯一可以省略分号的语句。

    8. 显示当前数据库 select database();

    select database();

    进入数据库中,可以使用 select database(); 来查看当前处于哪个数据库中。长时间操作数据库时,在很多数据库中来回切换后,查看当前的数据库,避免操作错了数据库。

    三、创建数据表

    1. 查看当前数据库中的表

    使用 show tables;查看当前数据库中有哪些表。

    show tables;
    

    在刚才创建的数据库 MyDB_one 中,还没有创建任何表,所以当前是空的。

    2. 创建表

    使用 create table 表名(字段1 字段类型,字段2 字段类型,字段3 字段类型,…); 来创建一张表。

    create table Phone_table(pid INT, name CHAR(20), price INT);

    在 MyDB_one 中创建了一个叫 Phone_table 的数据表,这张表有三个字段 pid,name,price 。为了增加 SQL 的可读性,字段名我用的是小写,字段类型用大写。

    3. 显示表信息

    用 show create table 表名; 来显示已创建的表的信息。

    show create table Phone_table;

    使用 show create table 表名;  可以显示表的字段信息, MySQL 的引擎,和默认的字符编码等信息。与显示数据库信息一样,show 只能显示已经创建了的数据表的信息,不能在创建的同时显示信息。

    如果想更好地展示表的字段信息,可以使用 desc 表名; 来显示表的字段信息。

    4. 给表增加字段

    使用 alter table 表名 add 字段名 数据类型; 为已存在的表添加一个新字段。

    alter table Phone_table add color CHAR(20);

    添加后,刚才的表中多了一个字段,新增成功。

    5. 删除表的字段

    使用 alter table 表名 drop 字段名; 删除一个表中已存在的字段。

    alter table Phone_table drop price;

    删除字段后,表中不再有该字段。

    6. 修改字段的数据类型

    使用 alter table 表名 modify 字段名 数据类型; 修改表中现有字段的数据类型。

    alter table Phone_table modify name VARCHAR(12);

    修改之后,该字段的数据类型发生改变。

    7. 修改字段的数据类型并且改名

    使用 alter table 表名 change 原字段名 新字段名 数据类型; 修改表中现有字段的字段名和类型。

    alter table Phone_table change name pname CHAR(18);

    现在,将表的 name 改成了 pname ,同时修改了 pname 的数据类型。

    四、MySQL 常用字段类型

    一个数据表是由若干个字段组成的,一个表十几个字段也很正常,每个字段表示不同的信息,需要使用不同类型的数据。

    所以在创建表的时候,要为每个字段指定适合的数据类型。

    MySQL 中常用的字段类型有以下这些:

    1. 整数类型

    数据类型 数据范围
    TINYINT -128 -- 127
    SMALLINT -32768 -- 32767
    MEDIUMINT -2^23 -- 2^23-1
    INT -2^31 -- 2^31-1
    BIGINT -2^63 -- 2^63-1

    2. 字符串类型

    数据类型 字节范围 用途
    CHAR(n) 0 -- 255字节 定长字符串
    VARCHAR(n) 0 -- 65535字节 变长字符串
    TEXT 0 -- 65535字节 长文本数据
    LONGTEXT 0 -- 2^32-1字节 极大文本数据
    BLOB 0 -- 65535字节 二进制长文本数据
    LONGBLOB 0 -- 2^32-1字节 二进制极大文本数据

    3. 小数类型

    m 表示浮点数的总长度,n 表示小数点后有效位数。

    数据类型 数据用法 数据范围
    Float Float(m,n) 7位有效数
    Double Double(m,n) 15位有效数
    Decimal Decimal(m,n) 28位有效数

    4. 时间类型

    数据类型 格式 用途
    DATE YYYY-MM-DD 日期
    TIME HH:MM:SS 时间
    YEAR YYYY 年份
    DATETIME YYYY-MM-DD HH:MM:SS 日期和时间
    TIMESTAMP 10位或13位整数(秒数) 时间戳

    5. 枚举类型

    enum(枚举值1,枚举值2,...)

    枚举类型只能在列出的值中选择一个,如性别。

     

     

    展开全文
  • 下面是利用SQL语句创建数据库、、存储过程、视图、索引、规则、修改、查看数据等的方法。所要增加的控件如下: Imports System.Data Imports System.Data.SqlClient Public Class Form1  ...
    下面是利用SQL语句创建数据库、表、存储过程、视图、索引、规则、修改表、查看数据等的方法。所要增加的控件如下:






    Imports System.Data
    Imports System.Data.SqlClient


    Public Class Form1
      Inherits System.Windows.Forms.Form
      Private ConnectionString As String = "Data Source=.;Initial Catalog=;User Id=sa;Password=;"
      Private reader As SqlDataReader = Nothing
      Private conn As SqlConnection = Nothing
      Private cmd As SqlCommand = Nothing
      Private AlterTableBtn As System.Windows.Forms.Button
      Private sql As String = Nothing
      Private CreateOthersBtn As System.Windows.Forms.Button


    #Region " Windows 窗体设计器生成的代码 "
      '窗体重写处置以清理组件列表。
      Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
          If Not (components Is Nothing) Then
            components.Dispose()
          End If
        End If
        MyBase.Dispose(disposing)
      End Sub
      Public Sub New()
        MyBase.New()
        InitializeComponent()
      End Sub
      Private components As System.ComponentModel.IContainer
      Friend WithEvents DataGrid1 As System.Windows.Forms.DataGrid
      Friend WithEvents CreateDBBtn As System.Windows.Forms.Button
      Friend WithEvents CreateTableBtn As System.Windows.Forms.Button
      Friend WithEvents CreateSPBtn As System.Windows.Forms.Button
      Friend WithEvents CreateViewBtn As System.Windows.Forms.Button
      Friend WithEvents btnAlterTable As System.Windows.Forms.Button
      Friend WithEvents btnCreateOthers As System.Windows.Forms.Button
      Friend WithEvents btnDropTable As System.Windows.Forms.Button
      Friend WithEvents btnViewData As System.Windows.Forms.Button
      Friend WithEvents btnViewSP As System.Windows.Forms.Button
      Friend WithEvents btnViewView As System.Windows.Forms.Button
      <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Me.CreateDBBtn = New System.Windows.Forms.Button()
        Me.CreateTableBtn = New System.Windows.Forms.Button()
        Me.CreateSPBtn = New System.Windows.Forms.Button()
        Me.CreateViewBtn = New System.Windows.Forms.Button()
        Me.btnAlterTable = New System.Windows.Forms.Button()
        Me.btnCreateOthers = New System.Windows.Forms.Button()
        Me.btnDropTable = New System.Windows.Forms.Button()
        Me.btnViewData = New System.Windows.Forms.Button()
        Me.btnViewSP = New System.Windows.Forms.Button()
        Me.btnViewView = New System.Windows.Forms.Button()
        Me.DataGrid1 = New System.Windows.Forms.DataGrid()
        CType(Me.DataGrid1, System.ComponentModel.ISupportInitialize).BeginInit()
        Me.SuspendLayout()
        '
        'CreateDBBtn
        '
        Me.CreateDBBtn.Location = New System.Drawing.Point(19, 9)
        Me.CreateDBBtn.Name = "CreateDBBtn"
        Me.CreateDBBtn.Size = New System.Drawing.Size(104, 23)
        Me.CreateDBBtn.TabIndex = 0
        Me.CreateDBBtn.Text = "创建数据库"
        '
        'CreateTableBtn
        '
        Me.CreateTableBtn.Location = New System.Drawing.Point(139, 9)
        Me.CreateTableBtn.Name = "CreateTableBtn"
        Me.CreateTableBtn.TabIndex = 1
        Me.CreateTableBtn.Text = "创建表"
        '
        'CreateSPBtn
        '
        Me.CreateSPBtn.Location = New System.Drawing.Point(230, 9)
        Me.CreateSPBtn.Name = "CreateSPBtn"
        Me.CreateSPBtn.Size = New System.Drawing.Size(104, 23)
        Me.CreateSPBtn.TabIndex = 2
        Me.CreateSPBtn.Text = "创建存储过程"
        '
        'CreateViewBtn
        '
        Me.CreateViewBtn.Location = New System.Drawing.Point(350, 9)
        Me.CreateViewBtn.Name = "CreateViewBtn"
        Me.CreateViewBtn.TabIndex = 3
        Me.CreateViewBtn.Text = "创建视图"
        '
        'btnAlterTable
        '
        Me.btnAlterTable.Location = New System.Drawing.Point(441, 9)
        Me.btnAlterTable.Name = "btnAlterTable"
        Me.btnAlterTable.TabIndex = 4
        Me.btnAlterTable.Text = "修改表"
        '
        'btnCreateOthers
        '
        Me.btnCreateOthers.Location = New System.Drawing.Point(17, 43)
        Me.btnCreateOthers.Name = "btnCreateOthers"
        Me.btnCreateOthers.Size = New System.Drawing.Size(104, 23)
        Me.btnCreateOthers.TabIndex = 5
        Me.btnCreateOthers.Text = "创建规则和索引"
        '
        'btnDropTable
        '
        Me.btnDropTable.Location = New System.Drawing.Point(138, 43)
        Me.btnDropTable.Name = "btnDropTable"
        Me.btnDropTable.TabIndex = 6
        Me.btnDropTable.Text = "删除表"
        '
        'btnViewData
        '
        Me.btnViewData.Location = New System.Drawing.Point(351, 43)
        Me.btnViewData.Name = "btnViewData"
        Me.btnViewData.TabIndex = 7
        Me.btnViewData.Text = "查看数据"
        '
        'btnViewSP
        '
        Me.btnViewSP.Location = New System.Drawing.Point(230, 43)
        Me.btnViewSP.Name = "btnViewSP"
        Me.btnViewSP.Size = New System.Drawing.Size(104, 23)
        Me.btnViewSP.TabIndex = 8
        Me.btnViewSP.Text = "查看存储过程"
        '
        'btnViewView
        '
        Me.btnViewView.Location = New System.Drawing.Point(443, 43)
        Me.btnViewView.Name = "btnViewView"
        Me.btnViewView.TabIndex = 9
        Me.btnViewView.Text = "查看视图"
        '
        'DataGrid1
        '
        Me.DataGrid1.DataMember = ""
        Me.DataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText
        Me.DataGrid1.Location = New System.Drawing.Point(20, 76)
        Me.DataGrid1.Name = "DataGrid1"
        Me.DataGrid1.Size = New System.Drawing.Size(500, 183)
        Me.DataGrid1.TabIndex = 10
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(538, 281)
        Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.DataGrid1, Me.btnViewView, _
                  Me.btnViewSP, Me.btnViewData, Me.btnDropTable, Me.btnCreateOthers, Me.btnAlterTable, _
                  Me.CreateViewBtn, Me.CreateSPBtn, Me.CreateTableBtn, Me.CreateDBBtn})
        Me.Name = "Form1"
        Me.Text = "动态创建SQL Server数据库、表、存储过程等架构信息"
        CType(Me.DataGrid1, System.ComponentModel.ISupportInitialize).EndInit()
        Me.ResumeLayout(False)


      End Sub


    #End Region


      ' 创建数据库
      Private Sub CreateDBBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles CreateDBBtn.Click
        conn = New SqlConnection(ConnectionString)
        ' 打开连接
        If conn.State <> ConnectionState.Open Then
          conn.Open()
        End If
        'MyDataBase为数据库名称
        Dim sql As String = "CREATE DATABASE MyDataBase ON PRIMARY (Name=MyDataBase_data, filename = " + _
            "'D:/MyDataBase.mdf', size=3," + "maxsize=5, filegrowth=10%) log on" + "(name=MyDataBase_log, " + _
            "filename='D:/MyDataBase.ldf',size=3," + "maxsize=20,filegrowth=1)"
        cmd = New SqlCommand(sql, conn)
        Try
          cmd.ExecuteNonQuery()
        Catch ae As SqlException
          MessageBox.Show(ae.Message.ToString())
        End Try
      End Sub
      '创建表
      Private Sub CreateTableBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles CreateTableBtn.Click
        conn = New SqlConnection(ConnectionString)
        ' 打开连接
        If conn.State = ConnectionState.Open Then
          conn.Close()
        End If
        ConnectionString = "Data Source=.;Initial Catalog=MyDataBase;User Id=sa;Password=;"
        conn.ConnectionString = ConnectionString
        conn.Open()
        sql = "CREATE TABLE myTable" + "(myId INTEGER CONSTRAINT PKeyMyId PRIMARY KEY," + _
          "myName CHAR(50) NOT Null, myAddress CHAR(255), myValues FLOAT)"
        cmd = New SqlCommand(sql, conn)
        Try
          cmd.ExecuteNonQuery()
          ' 添加纪录
          sql = "INSERT INTO myTable(myId, myName, myAddress, myValues) " + _
            "VALUES (1001, _'【孟宪会之精彩世界】之一', 'http://xml.sz.luohuedu.net/', 100 ) "
          cmd = New SqlCommand(sql, conn)
          cmd.ExecuteNonQuery()
          sql = "INSERT INTO myTable(myId, myName, myAddress, myValues) " + _
            "VALUES (1002, '【孟宪会之精彩世界】之二', 'http://www.erp800.com/net_lover/', 99) "
          cmd = New SqlCommand(sql, conn)
          cmd.ExecuteNonQuery()
          sql = "INSERT INTO myTable(myId, myName, myAddress, myValues) " + _
            "VALUES (1003, '【孟宪会之精彩世界】之三', 'http://xml.sz.luohuedu.net/', 99) "
          cmd = New SqlCommand(sql, conn)
          cmd.ExecuteNonQuery()
          sql = "INSERT INTO myTable(myId, myName, myAddress, myValues) " + _
            "VALUES (1004, '【孟宪会之精彩世界】之四', 'http://www.erp800.com/net_lover/', 100) "
          cmd = New SqlCommand(sql, conn)
          cmd.ExecuteNonQuery()
        Catch ae As SqlException
          MessageBox.Show(ae.Message.ToString())
        End Try


      End Sub
      '创建存储过程
      Private Sub CreateSPBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles CreateSPBtn.Click
        sql = "CREATE PROCEDURE myProc AS" + " SELECT myName, myAddress FROM myTable GO"
        ExecuteSQLStmt(sql)
      End Sub
      '创建视图
      Private Sub CreateViewBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles CreateViewBtn.Click
        sql = "CREATE VIEW myView AS SELECT myName FROM myTable"
        ExecuteSQLStmt(sql)


      End Sub
      '修改表
      Private Sub btnAlterTable_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles btnAlterTable.Click
        sql = "ALTER TABLE MyTable ADD newCol datetime NOT NULL DEFAULT (getdate())"
        ExecuteSQLStmt(sql)
      End Sub
      '创建规则和索引
      Private Sub btnCreateOthers_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles btnCreateOthers.Click
        sql = "CREATE UNIQUE INDEX " + "myIdx ON myTable(myName)"
        ExecuteSQLStmt(sql)


        sql = "CREATE RULE myRule " + "AS @myValues >= 90 AND @myValues < 9999"
        ExecuteSQLStmt(sql)
      End Sub


      '删除表
      Private Sub btnDropTable_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles btnDropTable.Click
        Dim sql As String = "DROP TABLE MyTable"
        ExecuteSQLStmt(sql)
      End Sub
      '浏览表数据
      Private Sub btnViewData_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles btnViewData.Click
        conn = New SqlConnection(ConnectionString)
        If conn.State = ConnectionState.Open Then
          conn.Close()
        End If
        ConnectionString = "Data Source=.;Initial Catalog=MyDataBase;User Id=sa;Password=;"
        conn.ConnectionString = ConnectionString
        conn.Open()
        Dim da As New SqlDataAdapter("SELECT * FROM myTable", conn)
        Dim ds As New DataSet("myTable")
        da.Fill(ds, "myTable")
        DataGrid1.DataSource = ds.Tables("myTable").DefaultView
      End Sub
      '浏览存储过程
      Private Sub btnViewSP_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles btnViewSP.Click
        conn = New SqlConnection(ConnectionString)
        If conn.State = ConnectionState.Open Then
          conn.Close()
        End If
        ConnectionString = "Data Source=.;Initial Catalog=MyDataBase;User Id=sa;Password=;"
        conn.ConnectionString = ConnectionString
        conn.Open()
        Dim da As New SqlDataAdapter("myProc", conn)
        Dim ds As New DataSet("SP")
        da.Fill(ds, "SP")
        DataGrid1.DataSource = ds.DefaultViewManager
      End Sub
      '浏览视图
      Private Sub btnViewView_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles btnViewView.Click
        conn = New SqlConnection(ConnectionString)
        If conn.State = ConnectionState.Open Then
          conn.Close()
        End If
        ConnectionString = "Data Source=.;Initial Catalog=MyDataBase;User Id=sa;Password=;"
        conn.ConnectionString = ConnectionString
        conn.Open()
        Dim da As New SqlDataAdapter("SELECT * FROM myView", conn)
        Dim ds As New DataSet()
        da.Fill(ds)
        DataGrid1.DataSource = ds.DefaultViewManager
      End Sub


      Private Sub ExecuteSQLStmt(ByVal sql As String)
        conn = New SqlConnection(ConnectionString)
        ' 打开连接
        If conn.State = ConnectionState.Open Then
          conn.Close()
        End If
        ConnectionString = "Data Source=.;Initial Catalog=MyDataBase;User Id=sa;Password=;"
        conn.ConnectionString = ConnectionString
        conn.Open()
        cmd = New SqlCommand(sql, conn)
        Try
          cmd.ExecuteNonQuery()
        Catch ae As SqlException
          MessageBox.Show(ae.Message.ToString())
        End Try
      End Sub
    End Class
    展开全文
  • 【学习环境】:sql server 2012【学习内容】:使用sql语句进行库与创建【涉及知识点】:一、数据库的创建 Sql server 2012,分为界面操作和代码语句操作,界面操作后续说明,今天所记为Sql语句的操作 ...

    【学习环境】:sql server 2012

    【学习内容】:使用sql语句进行库与表的创建

    【涉及知识点】:

    一、数据库的创建

            在Sql server 2012中,分为界面操作和代码语句操作,界面操作在后续说明,今天所记为Sql语句的操作

            数据库创建:

    代码区

    Creater database 学生成绩管理系统

    On

    (

        name = 成绩管理,  /*数据文件名称*/

        filename = 'G:\sql server 2012 cq\学生成绩管理系统.mdf',  /*数据文件存储地址*/

        size = 5,

        maxsize = 10,  /*最大数据文件*/

        filegrowth = 2  /*增长速度*/

    )


    Log on

    (

        name = 成绩管理_Log,  /*日志文件名称*/

        filename = 'G:\sql server 2012 cq\学生成绩管理系统.ldf', 

        size = 2,

        maxsize = 5,

        filegrowth = 10%

    )

            上述代码中,简单的涉及到了数据库的名称,数据文件,日志文件,文件名称(name),储存位置(filename),存储大小(size/maxsize)及增长速度(filegrowth)的语句;此为最简单的通过Sql语句创建数据库的案例,接下来我们进行表的创建。

    二、表的创建

            在数据库中,“表”起到一个核心的作用,就目前我所知而言,数据库根据有无“表”而言,可将数据库分为关系式数据库、网络式数据库以及层次式数据库,我现在学习的即为关系式数据库,在关系式数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关系表格的分类,合并,连接或选取等运算来实现数据的管理。

            表的创建:

    代码区

    use 学生成绩管理系统

    create table students

    (

        Sid int   primary  key  identity/*学生编号*/,

        Sname  Nvarchar(50)  not  null/*学生姓名*/,

        Ssex  char(2) not  null default '男' check(rsex='男' or rsex='女')/*读者性别*/,

        Stypeid  int  not  null,/*学生类型编号*/

        Saddress  Nvarchar(50)  default '地址不详',/*家庭住址*/

        email  Nvarchar(50)  check(email  like  '%@%'),/*电子邮件*/

        foreign  key(rtypeid)  references  readtype(rtypeid) 

    )

        在上述代码中,我创建了一个六列的表,在创建数据库中的“表”时,可以遵循如下的规则:

     use 数据库名

    Create table 表名

      (

            列名    列数据类型【宽度】    【default 默认值】    列约束

     )

    在约束中,我们可以对其进行一系列的设置,常见约束如下所示:

    1、主键:primary key

    2、外键:foreign key(列名) references 表名(列名)

    3、检查约束:check(约束条件)

    4、默认约束:default

    5、唯一性约束:unique

            我们将约束分为列约束及表约束,列约束可直接在写在该列的后方,而表约束需要写完所有的基本列之后才可进行列约束的书写,在书写表约束时,须在前方写“constraint”以示要进行约束书写,如:

    contraint fk_本表名_想要关联的主键所在表 froeign key(列名) references 关联的主键所在表(列名)

    contraint pk_本表名 primary key(列名......)/*用表约束创建主键时,说明想要创建复合主键,否则,用列约束创建会比较方便*/

            写到此处,基本上已经将数据库与表的Sql创建语句写完了,再补一些在创建表时常用的语句作为该次文本的结束

    1、获得当前系统时间:getdate()

    2、列数值不允许为空:not null

    3、对某个数据进行说明:/**/

    4、必须包含某种字符或字符串:使用Check约束,在约束中写“like %(_)约束条件(_)%”【%该符号用于字符串;_该符号用于单个字符】

    5、增长量:identity(),若括弧中以1,1的形式出现,此时表示的是该属性自增

    展开全文
  • 版权声明:本文为博主原创文章,欢迎转载,转载请注明出处! ... 注:hive其他语法hive官网有说明,建议初学者,去官网学习一手的资料, 官网:htt...
    版权声明:本文为博主原创文章,欢迎转载,转载请注明出处! https://blog.csdn.net/qq_36743482/article/details/78383964

    注:hive其他语法在hive官网有说明,建议初学者,去官网学习一手的资料,
    官网:https://cwiki.apache.org/confluence/display/Hive/Home#Home-UserDocumentation

    Create Table

    官网说明

    Hive建表方式共有三种:

    • 直接建表法
    • 查询建表法
    • like建表法

    首先看官网介绍
    ’[]’ 表示可选,’|’ 表示二选一

    CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name    -- (Note: TEMPORARY available in Hive 0.14.0 and later)
      [(col_name data_type [COMMENT col_comment], ... [constraint_specification])]
      [COMMENT table_comment]
      [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
      [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
      [SKEWED BY (col_name, col_name, ...)                  -- (Note: Available in Hive 0.10.0 and later)]
         ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)
         [STORED AS DIRECTORIES]
      [
       [ROW FORMAT row_format] 
       [STORED AS file_format]
         | STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]  -- (Note: Available in Hive 0.6.0 and later)
      ]
      [LOCATION hdfs_path]
      [TBLPROPERTIES (property_name=property_value, ...)]   -- (Note: Available in Hive 0.6.0 and later)
    

    [AS select_statement]; – (Note: Available in Hive 0.5.0 and later; not supported for external tables)

    CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
    LIKE existing_table_or_view_name
    [LOCATION hdfs_path];

    data_type
    primitive_type
    | array_type
    | map_type
    | struct_type
    | union_type – (Note: Available in Hive 0.7.0 and later)
    primitive_type
    TINYINT
    | SMALLINT
    | INT
    | BIGINT
    | BOOLEAN
    | FLOAT
    | DOUBLE
    | DOUBLE PRECISION – (Note: Available in Hive 2.2.0 and later)
    | STRING
    | BINARY – (Note: Available in Hive 0.8.0 and later)
    | TIMESTAMP – (Note: Available in Hive 0.8.0 and later)
    | DECIMAL – (Note: Available in Hive 0.11.0 and later)
    | DECIMAL(precision, scale) – (Note: Available in Hive 0.13.0 and later)
    | DATE – (Note: Available in Hive 0.12.0 and later)
    | VARCHAR – (Note: Available in Hive 0.12.0 and later)
    | CHAR – (Note: Available in Hive 0.13.0 and later)
    array_type
    ARRAY < data_type >
    map_type
    MAP < primitive_type, data_type >
    struct_type
    STRUCT < col_name : data_type [COMMENT col_comment], …>
    union_type
    UNIONTYPE < data_type, data_type, … > – (Note: Available in Hive 0.7.0 and later)
    row_format
    DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]] [COLLECTION ITEMS TERMINATED BY char]
    [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]
    [NULL DEFINED AS char] – (Note: Available in Hive 0.13 and later)
    | SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, …)]
    file_format:
    SEQUENCEFILE
    | TEXTFILE – (Default, depending on hive.default.fileformat configuration)
    | RCFILE – (Note: Available in Hive 0.6.0 and later)
    | ORC – (Note: Available in Hive 0.11.0 and later)
    | PARQUET – (Note: Available in Hive 0.13.0 and later)
    | AVRO – (Note: Available in Hive 0.14.0 and later)
    | INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname
    constraint_specification:
    [, PRIMARY KEY (col_name, …) DISABLE NOVALIDATE ]
    [, CONSTRAINT constraint_name FOREIGN KEY (col_name, …) REFERENCES table_name(col_name, …) DISABLE NOVALIDATE
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81

    观察可发现一共有三种建表方式,接下来我们将一一讲解。

    1.直接建表法:

    create table table_name(col_name data_type);
    
    • 1

    这里我们针对里面的一些不同于关系型数据库的地方进行说明。

    row format

    row_format
      : DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]] [COLLECTION ITEMS TERMINATED BY char]
            [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]
            [NULL DEFINED AS char]   -- (Note: Available in Hive 0.13 and later)
      | SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, ...)]
    

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    Hive将HDFS上的文件映射成表结构,通过分隔符来区分列(比如’,’ ‘;’ or ‘^’ 等),row format就是用于指定序列化和反序列化的规则。
    比如对于以下记录:

    1,xiaoming,book-TV-code,beijing:chaoyang-shagnhai:pudong
    2,lilei,book-code,nanjing:jiangning-taiwan:taibei
    3,lihua,music-book,heilongjiang:haerbin
    
    • 1
    • 2
    • 3

    逗号用于分割列,即FIELDS TERMINATED BY char,分割为如下列 IDnamehobby(该字段是数组形式,通过 ‘-’ 进行分割,即COLLECTION ITEMS TERMINATED BY ‘-’)、address(该字段是键值对形式map,通过 ‘:’ 分割键值,即 MAP KEYS TERMINATED BY ‘:’);
    而FIELDS TERMINATED BY char用于区分不同条的数据,默认是换行符;

    file format(HDFS文件存放的格式)

    默认TEXTFILE,即文本格式,可以直接打开。

    如下:根据上述文件内容,创建一个表t1

    create table t1(
        id      int
       ,name    string
       ,hobby   array<string>
       ,add     map<String,string>
    )
    row format delimited
    fields terminated by ','
    collection items terminated by '-'
    map keys terminated by ':'
    ;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    这里写图片描述
    2. 查看表的描述:desc t1;
    这里写图片描述

    1. 下面插入数据
      注:一般很少用insert (不是insert overwrite)语句,因为就算就算插入一条数据,也会调用MapReduce,这里我们选择Load Data的方式。
    LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
    
    • 1

    创建一个文件粘贴上述记录,并上载即可,如下图:
    这里写图片描述
    然后上载

    load data local inpath '/home/hadoop/Desktop/data' overwrite into table t1;
    
    • 1

    别忘记写文件名/data,笔者第一次忘记写,把整个Desktop上传了,一查全是null和乱码。。。。
    查看表内容:

    select * from t1;
    
    • 1

    这里写图片描述

    external

    未被external修饰的是内部表(managed table),被external修饰的为外部表(external table);
    区别:
    内部表数据由Hive自身管理,外部表数据由HDFS管理;
    内部表数据存储的位置是hive.metastore.warehouse.dir(默认:/user/hive/warehouse),外部表数据的存储位置由自己制定;
    删除内部表会直接删除元数据(metadata)及存储数据;删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除;
    对内部表的修改会将修改直接同步给元数据,而对外部表的表结构和分区进行修改,则需要修复(MSCK REPAIR TABLE table_name;)

    创建一个外部表t2

    create external table t2(
        id      int
       ,name    string
       ,hobby   array<string>
       ,add     map<String,string>
    )
    row format delimited
    fields terminated by ','
    collection items terminated by '-'
    map keys terminated by ':'
    location '/user/t2'
    ;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    这里写图片描述

    装载数据
    load data local inpath '/home/hadoop/Desktop/data' overwrite into table t2;
    
    • 1

    这里写图片描述

    查看文件位置

    如下图,我们在NameNode:50070/explorer.html#/user/目录下,可以看到t2文件
    这里写图片描述

    t1在哪呢?在我们之前配置的默认路径里
    这里写图片描述

    同样我们可以通过命令行获得两者的位置信息:

    desc formatted table_name;
    
    • 1

    这里写图片描述

    这里写图片描述
    注:图中managed table就是内部表,而external table就是外部表。

    分别删除内部表和外部表

    下面分别删除内部表和外部表,查看区别
    这里写图片描述

    观察HDFS上的文件

    发现t1已经不存在了
    这里写图片描述

    但是t2仍然存在
    这里写图片描述
    因而外部表仅仅删除元数据

    重新创建外部表t2
    create external table t2(
        id      int
       ,name    string
       ,hobby   array<string>
       ,add     map<String,string>
    )
    row format delimited
    fields terminated by ','
    collection items terminated by '-'
    map keys terminated by ':'
    location '/user/t2'
    ;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    这里写图片描述

    不往里面插入数据,我们select * 看看结果
    这里写图片描述
    可见数据仍然在!!!

    官网说明
    A table created without the EXTERNAL clause is called a managed table because Hive manages its data. 
    Managed and External Tables
    By default Hive creates managed tables, where files, metadata and statistics are managed by internal Hive processes. A managed table is stored under the hive.metastore.warehouse.dir path property, by default in a folder path similar to /apps/hive/warehouse/databasename.db/tablename/. The default location can be overridden by the location property during table creation. If a managed table or partition is dropped, the data and metadata associated with that table or partition are deleted. If the PURGE option is not specified, the data is moved to a trash folder for a defined duration.
    Use managed tables when Hive should manage the lifecycle of the table, or when generating temporary tables.
    An external table describes the metadata / schema on external files. External table files can be accessed and managed by processes outside of Hive. External tables can access data stored in sources such as Azure Storage Volumes (ASV) or remote HDFS locations. If the structure or partitioning of an external table is changed, an MSCK REPAIR TABLE table_name statement can be used to refresh metadata information.
    Use external tables when files are already present or in remote locations, and the files should remain even if the table is dropped.
    Managed or external tables can be identified using the DESCRIBE FORMATTED table_name command, which will display either MANAGED_TABLE or EXTERNAL_TABLE depending on table type.
    Statistics can be managed on internal and external tables and partitions for query optimization. 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2.查询建表法

    通过AS 查询语句完成建表:将子查询的结果存在新表里,有数据
    一般用于中间表

    CREATE TABLE new_key_value_store
       ROW FORMAT SERDE "org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe"
       STORED AS RCFile
       AS
    SELECT (key % 1024) new_key, concat(key, value) key_value_pair
    FROM key_value_store
    SORT BY new_key, key_value_pair;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    根据例子我们建一张表:t3

    create table t3 as
    select
        id
       ,name
    from t2
    ;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    会执行MapReduce过程。
    查看表结构及内容,发现是有数据的,并且由于没有指定外部表和location,该表在默认位置,即是内部表。
    这里写图片描述

    3.like建表法

    会创建结构完全相同的表,但是没有数据。
    常用语中间表

    CREATE TABLE empty_key_value_store
    LIKE key_value_store;
    
    • 1
    • 2

    例子

    create table t4 like t2;
    
    • 1

    可以发现,不会执行MapReduce,且表结构和t2完全一样,但是没有数据。
    这里写图片描述

            </div>
    					<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-2787195726.css" rel="stylesheet">
                </div>
    
    展开全文
  • DDL语句--创建表

    万次阅读 2016-03-31 11:13:01
    是数据库存储数据的基本单位。一个包含若干字段和记录。的操作包含创建,修改,删除。这些操作都是数据库管理最基本,也是最重要的操作。 具体而言,关于的相关操作...创建表是指已存在的数据库
  • 数据库的所有数据存储在表中数据表包括行和列。列决定了表中数据的类型。行包含了实际的数据。 例如,数据库pubsauthors有九个字段。其中的一个字段名为为au_lname,这个字段被用来存储作者的名字信息。...
  • MySQL创建语句和修改语句

    千次阅读 2018-10-01 20:54:31
    1.创建表的语法规则:  create table &lt;表名&gt; (  字段名1 数据类型 [列级别约束条件] [默认值],  字段名2 数据类型 [列级别约束条件] [默认值],  ......  [级别约束条件]  );  使用create ...
  • SQL语句操作MYSQL数据库和数据表
  • 一、操作环境 数据库版本:sql server 2012 测试数据库:Northwind,安装方法请...上图结果返回了“Northwind”的所有,然后看“type”列,其对应的关系如下 规则 对应缩写 规则 对应缩写 规则 对...
  • 用SQL语句创建表

    万次阅读 多人点赞 2016-07-28 23:22:41
    数据库的所有数据存储在表中数据表包括行和列。列决定了表中数据的类型。行包含了实际的数据。  例如,数据库pubsauthors有九个字段。其中的一个字段名为为au_lname,这个字段被用来存储作者的...
  • phpMyAdmin是众多MySQL图形化管理工具使用最广泛的一种,不管是Windows还是Linux,都可以通过该管理工具可以对MySQL进行各种操作。 一、下载及安装 用户可以官方网站上免费下载最新版本,免费下载 下载好后,把...
  • Oracle DB 使用DDL语句创建和管理

    万次阅读 2013-10-21 10:02:46
    • 说明创建表时如何创建约束条件 • 描述方案对象如何工作 • 数据库对象 – 命名规则 • CREATE TABLE语句: – 访问另一个用户的 – DEFAULT选项 • 数据类型 • 约束条件概览:NOT NULL、UNIQUE、PRIMARY ...
  • 用SQL语句创建数据库和

    万次阅读 2016-06-10 20:32:14
    --------创建数据库 ----use master ----GO ----IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = 'test1') ----DROP DATABASE test1 ----GO ...------创建教师 --use test1 --
  • 一、创建数据表的SQL语句模型【弱类型】 CREATE TABLE [IF NOT EXISTS] 名称( 字段名1 列的类型 [属性][索引], 字段名2 列的类型 [属性][索引], … 字段名n 列的类型 [属性][索引], )[属性][字符...
  • thinkphp5 创建数据表

    千次阅读 2019-03-25 12:06:11
    如果需要分表1000个,也不能马上创建1000张表,监听另一张数据是否有新的数据增减,如果有增加,我们就要自动去创建相应的数据表 具体实现方法如下: public function testCreateTable() { //创建数据表 ...
  • sql语句创建主键

    千次阅读 2016-09-26 11:39:07
    对于有数据企业管理器里面创建索引时,容易超时,使用sql语句只要,工具-选项设置超时值为0,就不会超时。 已有表里创建主键:alter table t_inputdata add constraint PK_t_inputdata primary key...
  • FlinkSQL使用DDL语句创建kafka源

    千次阅读 2020-01-14 23:44:22
    Flink1.9.x版本,社区版本的 Flink 新增 了一个 SQL DDL 的新特性,但是暂时还不支持流式的一些概念的定义,比如说水位(watermark). 下面主要介绍一下怎...
  • DDL语句--创建数据库

    千次阅读 2016-03-24 16:18:29
    OK,从这篇博客开始我来认真的整理一下数据库相关操作,也就是sql语句。 sql的全称是structured query language,也就是结构化查询语言。...1,数据库检索信息 2,对数据库的信息进行更新 3,
  • MySQL创建数据库(CREATE DATABASE语句

    千次阅读 2019-09-22 22:51:54
    数据库可以看作是一个专门存储数据对象的容器,这里的数据对象包括、... MySQL ,可以使用 CREATE DATABASE 语句创建数据库,语法格式如下: CREATE DATABASE [IF NOT EXISTS] <数据库名> [[DEFAULT...
  • 同志们注意哟:学习SQL的好网站:http://www.w3school.com.cn/sql/sql_distinct.asp 同志们注意哟:学习SQL的好网站:... --------创建数据库 ----use master ----GO ----IF EXISTS (SELECT name F
  • SQL创建默认值语句(CREATE DEFAULT)

    千次阅读 2019-09-26 20:53:41
    当绑定到列或别名数据类型时,如果插入时没有显式提供值,则默认值将指定一个值,以便将其插入该对象所绑定的列(或者,如果是别名数据类型,则插入所有列)。 后续版本的 Microsoft SQL Server 将删除该功能。...
  • 利用SQL语句查询数据库所有

    千次阅读 2012-06-12 18:11:00
    1,利用sysobjects系统 这个表中数据库中创建的每个对象(例如约束、默认值、日志、规则以及存储过程)都有对应一行,我们表中筛选出xtype等于U的所有记录,就为数据库了。 示例语句如下:: ...
  • MySQL数据表的基本操作,字段的添加、删除、重命名、类型更改、的各种约束
  • 这个表中数据库中创建的每个对象(例如约束、默认值、日志、规则以及存储过程)都有对应一行,我们表中筛选出xtype等于P的所有记录,就为数据库的存储过程了。 示例语句如下: select * from ...
  • v创建一个只含一个数据文件和一个事务日志文件的数据库   vCREATE DATABASE 数据库名  [ON [PRIMARY]  {(NAME=数据文件的逻辑名称,  FILENAME='数据文件的路径和文件名',  SIZE=数据文件的初始...
  • 1、去掉Oracle生成的SQL创建语句中的双引号 用powerdesigner导出orale数据库的建表sql时,默认会给表名和字段名加上双引号,如下图: 这样给操作数据库带来很大的不便,解决的办法是设置Database菜单, ...
  • (1)插入非空值时,如果主键表中没有这个值,则不能插入。 (2)更新时,不能改为主键表中没有的值。 (3)删除主键记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。 (4)更新主键记录时,同样有级联...
  • postgresql 创建数据表。临时

    千次阅读 2015-05-23 23:39:30
    CREATE TABLE -- 定义一个新 Synopsis CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name ( { column_name data_type [ DEFAULT default_expr ] [ column_constraint
  • 一文搞懂MySQL的分层架构和select语句在MySQL的执行流程!
  • Impala版本: 2.7.0+cdh5.10.2+0Kudu版本:1.4.0+cdh5.12.0+0Hue版本:3.9.0+cdh5.10.2+4153因业务需要,需要kudu中创建含有中文字段的。原来的方案是直接HueImpala查询界面执行建表脚本,但是表中还有中文...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 295,817
精华内容 118,326
关键字:

在数据表中创建规则的语句是