sql通用语法
1.以分号结尾
2.使用空格/缩进来增强可读性
3.sql语句不区分大小写,关键字建议大写
4.单行注释:-- 注释内容或# 注释内容(注意要加空格)
多行注释:/* 注释内容 */
sql分类
1.DDL 数据定义语言 definition 用来定义数据库对象(数据库,表,字段)
2.DML 数据操作语言manipulation(增删改)
3.DQL 数据查询语言query
4.DCL 数据控制语言control 创建数据库用户,控制用户访问权限
准备活动:相信你已经迫不及待想要尝试用sql语句建立数据库啦!别急,这里有两种方法来实现,在安装了mysql的基础上:
1.使用命令行窗口,通过mysql -u root -p命令来进入mysql
2.使用navicat,SQLyog等可视化工具,这里我选择的是navicat。与数据库连接后右键选择命令列界面就可以通过sql语句来建表啦!
DDL---数据库操作
-
查询
查询所有数据库
SHOW DATABASES;
查询当前数据库
SELECT DATABASES();
-
创建
CREATE DATABASE [IF NOT EXISTS]数据库名 [DEFAULT CHARSET 字符集][COLLATE 排序规则];
[ ]中内容皆为可选,[IF NOT EXISTS]表示如果不存在则进行创建,若该数据库已经存在也不会产生报错;键盘上的上下键可在命令行中查询执行过的SQL语句
-
删除
DROP DATABASE[IF EXISTS]数据库名;
-
使用
USE 数据库名;
DDL---表操作
查询
-
查询当前数据库所有库
SHOW TABLES;
注意:要先进入到该数据库才可执行此查询操作,先通过use指令使用该数据库。
-
查询表结构
DESC 表名;
-
查询指定表的建表语句
SHOW CREATE TABLE 表名;
创建
CREATE TABLE 表名(
字段1 字段1类型[COMMENT 字段1注释],
字段2 字段2类型[COMMENT 字段2注释],
字段3 字段3类型[COMMENT 字段3注释],
...
字段n 字段n类型[COMMENT 字段n注释]
)[COMMENT 表注释];
注意:最后一个字段后无逗号分隔
DDL---数据类型
数值类型
类型 | 大小 | 描述 |
---|---|---|
TINYINT | 1bytes | 小整数值 |
SMALLINT | 2bytes | 大整数值 |
MEDIUMINT | 3bytes | 大整数值 |
INT或INTEGER | 4bytes | 大整数值 |
BIGTNT | 8bytes | 极大整数值 |
FLOAT | 4bytes | 单精度浮点数值 |
DOUBLE | 8bytes | 双精度浮点数值 |
DECTMAL | 小数值(精确定点数) |
精确定点数:取决于精度和标度,精度是整个数的长度,标度是小数部分的长度。eg. 123.45,精度为5,标度为3。
举例:age TINYINT UNSIGNED(指定无符号范围,有符号范围SIGNED包括负数)
score DOUBLE(4,1) 需要传入两个参数(存疑),第一个参数“4”表示最长长度,第二个参数“1"表示允许出现的小数位数。
字符串类型
类型 | 描述 |
---|---|
CHAR | 定长字符串 |
VARCHAR | 变长字符串 |
TINYBLOB | 不超过255个字节的二进制数 |
TINYTEXT | 短文本字符串 |
BLOB | 二进制形式的长文本数据 |
TEXT | 长文本数据 |
MEDIUMBLOB | 二进制形式的中长文本数据 |
MEDIUMTEXT | 中等长度文本数据 |
LONGBLOB | 二进制形式的极大文本数据 |
LONGTEXT | 极大文本数据 |
定长:char(10)如果只存一个字符,也是占用10个字节的空间。性能好。定义性别适合用char。
变长:varchar(10)根据存储内容计算占用空间,在此例中长度超过10则报错。性能较差。定义用户名适合用varchar。
日期时间类型
类型 | 格式 | 描述 |
---|---|---|
DATE | YYY-MM-DD | 日期值 |
TIME | HH:MM:SS | 时间值或持续时间 |
DATETIME | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
DDL表操作---修改
添加字段
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT注释][约束];
修改数据类型(修改指定字段的数据类型)
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度)[COMMENT注释][约束];
删除字段
ALTER TABLE 表名 DROP 字段名;
修改表名
ALTER TABLE 表名 RENAME TO 新表名;
删除表
彻底全部删除
DROP TABLE[IF EXISTS] 表名;
删除指定表,并重新创建该表
只删掉了数据,保留表结构
TRUNCATE TABLE 表名;
DML--增删改
添加数据
给指定字段添加数据
INSERT INTO 表名(字段名1,字段名2,...) VALUES(值1,值2,...);
给全部字段添加数据(字段与值需要一一对应,数量上要相等,否则会报错)
INSERT INTO 表名 VALUES(值1,值2,...);
批量添加数据(一次性添加多条数据)
INSERT INTO 表名(字段名1,字段名2,...) VALUES(值1,值2,...)(值1,值2,...);
INSERT INTO 表名 VALUES(值1,值2,...)(值1,值2,...);
注意:
字符型和日期型数据应该包含在引号中;插入数据的大小应该在字段的规定范围内。
修改数据
如果不带WHERE条件则更新整张表的数据
UPDATE 表名 SET 字段名1=值1,字段名2=值2,...[WHERE 条件];
删除数据
如果不带WHERE条件则删除整张表的数据,DELETE不能删除某个字段的值(可以用UPDATE语句设置为NULL)
DELETE FROM 表名[WHERE 条件];