MySql的语法

    xiaoxiao2021-03-25  129

    1.创建表的语句

    CREATE TABLE [IF NOT EXISTS]tabke_name( column_name data_type, .... )

    2. 查看数据表列表

    SHOW TABLES [FROM db_name] [LINK 'pattern' | WHERE expr]

    3. 查看数据表结构

    SHOW COLUMNS FROM tbl_name //用来查看数据表中对应字段的类型

    4. 插入记录

    INSERT [INTO] tbl_name [(col_name,...)] VALUES(val,...)

    5. 记录查询

    SELECT expr,.. FROM tal_name

    6.自动编码

    //AUTO_INCREMENT //1. 自动编码,且必须与主键组合使用 //2. 默认情况下,起始值为1,每次的增量为1 //PRIMARY KEY // 1.主键约束 // 2.每张数据表只能存在一个主键 // 3.主键保证记录的唯一性 // 4.主键自动为NOT NULL //自增的主键 CREATE TABLE tb3( id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, username VARCHAR(30) NOT NULL ); //不自增的主键(主键不可相同) CREATE TABLE tb3( id SMALLINT UNSIGNED PRIMARY KEY, username VARCHAR(30) NOT NULL );

    7.唯一约束

    //UNIQUE KEY //1. 唯一约束 //2. 唯一约束可以保证记录的唯一性 //3. 唯一约束的字段可以为空值(NULL) //4. 每张数据表可以存在多个唯一约束 CREATE TABLE tb5( id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, username VARCHAR(20) NOT NULL UNIQUE KEY,//唯一约束 age tinyint UNSIGNED //无符号整形 );

    8. 默认约束

    //1. 默认值 //2. 当插入记录时,如果没有明确为字段赋值,则自动赋予默认值 CREATE TABLE tb6( id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, username VARCHAR(20) NOT NULL UNIQUE KEY, sex ENUM('1','2','3') DEFAULT '3' //可以为空,默认赋值为3 );

    9.外键约束

    // FOREIGN KEY //1. 保持数据一致性,完整性 //2. 实现一对一或一对多关系 //外键约束的要求 //1. 父表和字表必须使用相同的存储引擎,而且禁止使用临时表。 //2. 数据表的存储引擎只能为InnoDB //3. 外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;尔字符的长度则可以不同。 //4. 外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。 //修改MySql的配置文件 myini 中default-storage-engine = INNODB //用来产看数据表创建的基本语法 SHOW CREATE TABLE tbl_name //可以查看详细的表的信息(表支持的引擎和编码) //创建 CREATE TABLE provinces( id SAMLLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, pname VARCHAR(20) NOT NULL ); CREATE TABLE user( id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, pid SMALLINT UNSIGNED, //外界列 FOREIGN KEY (pid) REFERENCES provinces (id) //参照列 ); //用来查看是否表拥有索引 SHOW INDEXES FROM provinces; //以网格形式展现当前的索引 SHOW INDEXES FROM provinces\G;

    10.外键约束的参照操作

    //1. CASCADE : 从父表删除或更新且自动删除或更新子表中匹配的行 //2. SET NULL: 从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL //3. RESTRICT: 拒绝对父表的删除或更新操作。 //4. NOT ACTION: 标准SQL的关键字,在MYSQL中与RESTRICT相同。 CREATE TABLE user1( id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, pid SMALLINT UNSIGNED, FOREIGN KEY (pid) REFERENCES provinces (id) DELETE CASCADE ); //当插入记录时,必须先在父表增加记录,之后才能在子表中加入记录。

    – 11. 表级约束与列级约束

    //1. 对一个数据列建立的约束,称为列级约束 //2. 对多个数据列建立的约束,称为表级约束 //3. 列级约束既可以在列定义时声明,也可以在列定以后声明。 //4. 表级约束只能在列定义后声明。

    – 12.修改数据表

    //添加单列 ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST|AFTER col_name] //添加多列(不能指定列的位置) ALTER TABLE tal_name ADD [COLUMN](col_name column_definition,...) //删除列 ALTER TABLE tbl_name DROP [COLUMN] col_name //增加主键约束 ALTER TABLE tal_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) //增加唯一约束 ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type](index_col_name,...) //增加外键约束 ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] FOREIFN KEY [index_name][index_type](index_col_name,...) reference_definition //增加/删除默认约束 ALTER TABLE tbl_name ALTER [COLUMN] col_name {SET DEFAULT literal|DROP DEFAULT} //删除主键约束 ALTER TABLE tbl_name DROP PRIMARY KEY //删除唯一约束 ALTER TABLE tbl_name DROP {INDEX|KEY} index_name //删除外键约束 ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol //修改列定义 ALTER TABLE tbl_name MODIFY [COLUMN] col_name column_definition [FIRST|AFTER col_name] //修改列名称 ALTER TABLE tbl_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col——name] //数据表更名方法一 ALTER TABLE tbl_name RENAME [TO|AS]new_tbl_name //数据表更名方法二 RENAME TABLE tbl_name TO new_tbl_name [,tbl_name2 TO new_tbl_name2]...

    – 13.插入

    //INSERT //插入记录 INSERT [INTO]tbl_name SET col_name={expr|DEFAULT},...//与普通的插入不同点在于,此方法可以使用子查询SubQuery() INSERT [INTO] tbl_name [(col_name),...] SELECT ... //此方法可以将查询结果插入到指定的数据表。

    14.更新

    //更新记录(单表更新) UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr1|DEFAULT}[,col_name2={expr2|DEFAULT}]...[WHERE where_condition]

    15.删除

    //删除记录(单表删除) DELETE FROM tbl_name [WHERE where_condition]

    16.查找

    SELECT select_expr[,slect_expr ...] [ FROM tble_references [WHERE where_condition] [GROUP BY {col_name|position} [ASC|DESC],...] [HAVING where_condition] [ORDER BY {col_name|expr|postion}[ASC|DESC],...] [LIMIT{[offset,]row_count|row_count OFFSET offset}] ] //AS 用来赋予别名 //WHERE 对记录进行过滤,如果没有指定WHERE子句,则显示所有记录。在WHERE表达式中,可以使用MYSQL的运算符 //GROUP BY 查询结果分组 [GROUP BY{col_name|position}[ASC|DESC],...] 其中ASC是升序 DESC是降序 //HAVING 分组条件 [HAVING where_condition] eg:SELECT sex,age FROM users GROUP BY 1 HAVING age>35; 或 SELECT sex FROM users GROUP BY 1 HAVING count(id)>=2; //ORDER BY 对查询结果进行排序 //进行查询平均值 SELECT AVG(column_name) FROM tbl_name; //设置平均值后的小数点 SELECT ROUND(AVG(column_name),2) FROM tbl_name; //使用[NOT]IN的子查询 =ANY运算符与IN等效。!=ALL或<>ALL运算符与NOT IN等效 //使用[NIT]EXISTS的 如果子查询返回任何行,EXISTS将返回TRUE;否则为FALSE //将查询结果写入数据表中 INSERT [INTO]tbl_name [(col_name,...)] SELECT... //多表更新 UPDATE table_references SET col_name1={expr1|DEFAULT}[,col_name2={expr2|DEFAULT}]...[WHERE where_condition] //例如 UPDATE tble_goods AS g INNER JOIN tdb_goods_brands AS b ON g.brands=b.brands SET g.brand_name=b.brand_id;

    转载请注明原文地址: https://ju.6miu.com/read-5368.html

    最新回复(0)