1.SQL通用语法
1.SQL语句可以单行或多行书写,以分号结尾。
2. SQL语句可以使用空格/缩进来增强语句的可读性。
3.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
4.注释:
(1)单行注释:--注释内容或#注释内容(MySQL特有)
(2)多行注释:/*注释内容*/
2.SQL分类
SQL语句,根据其功能,主要分为四类:DDL、DML、DQL、DCL。
3 DDL
对数据库、表、字段的定义操作。
3.1数据库操作
3.1.1查询
查询所有数据库:SHOW DATABASES;
例:输入,就可查询当前数据库服务器中所有的数据库,包括我刚刚新建的两个。
查询当前正在使用的数据库:SELECT DATABASE(); #注意括号()不能少!
3.1.2创建
CREATE DATABASE [IF NOT EXISTS]数据库名「 DEFAULT CHARSET字符集][COLLATE 排序规则];
例1:输入create database itcast;
就会创建好名为itcas的数据库:
例2:输入CREATE DATABASE if not exists ithe default charset utf8mb4;
3.1.3删除
DROP DATABASE [ IF EXISTS]数据库名;
例:输入drop DATABASE ithe
然后查询:show DATABASEs
发现就没有ithe这个表了
3.1.4使用
USE 数据库名;
切换到指定的这个数据库,进行使用。
例:输入use library
再查询:SELECT DATABASE()
结果为:
3.2表操作
3.2.1查询
查询当前数据库所有表
也可以用use切换指定数据库,再查询。
查询表结构
DESC表名;
查询指定表的建表语句
SHOW CREATE TABLE表名;
3.2.2创建
逗号分离,最后一个字段没有逗号。通过comment加上对应字段的注释。
示例:
可以用desc+表名 查询表结构:
3.2.3数据类型
(1)数值类型
(2)字符串类型
VARCHAR——VS——CHAR
1)VARCHAR类型用于存储可变长度字符串,是最常见的字符串数据类型。它比固定长度类型更节省空间,因为它仅使用必要的空间(根据实际字符串的长度改变存储空间)。
有一种情况例外,如果MySQL表使用ROW_FORMAT=FIXED创建的话,每一行都会使用定长存储。
2)CHAR类型用于存储固定长度字符串:MySQL总是根据定义的字符串长度分配足够的空间。当存储CHAR值时,MySQL会删除字符串中的末尾空格(在MySQL 4.1和更老版本中VARCHAR 也是这样实现的——也就是说这些版本中CHAR和VARCHAR在逻辑上是一样的,区别只是在存储格式上)。
同时,CHAR值会根据需要采用空格进行剩余空间填充,以方便比较和检索。但正因为其长度固定,所以会占据多余的空间,也是一种空间换时间的策略;
如:
用户名username varchar(50)
性别gender char(1)
(3)日期时间类型
没有负数,就要用无符号的,加上关键字unsigned。
例:设计一张员工信息表,要求如下:
1.编号(纯数字)
2.员工工号(字符串类型,长度不超过10位)
3.员工姓名(字符串类型,长度不超过10位)
4.性别(男/女,存储一个汉字)
5.年龄(正常人年龄,不可能存储负数)
6.身份证号(二代身份证号均为18位,身份证中有X这样的字符)
7.入职时间(取值年月日即可)
代码如下:
create table emp(
id int comment '编号',
empid varchar(10) comment '员工工号',
empname varchar(10) comment '员工姓名',
sex char(1) comment '性别',
age tinyint unsigned comment'年龄',
idcard char(18) comment'身份证号',
entime date comment'入职时间'
)
3.2.4表修改(alter打头)
(1)添加字段add
ALTER TABLE 表名 ADD 字段名 类型(长度)[COMMENT注释][约束];
案例:
为emp表增加一个新的字段“昵称”为nickname,类型为varchar(20)
代码:
alter table emp add nickname varchar(20) comment'昵称'
查询可知已成功添加:
(2)修改字段
1)修改字段数据类型(modify)
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
2)修改字段名和字段类型(change)
ALTER TABLE表名CHANGE旧字段名 新字段名 类型(长度)[COMMENT注释][约束];
案例:
将emp表的nickname字段修改为username,类型为varchar(30)
代码:在添加字段的代码上修改就是将add改为change,原本一个字段名,改为包含旧和新的两个字段名。
alter table emp change nickname username varchar(20) comment'昵称'
(3)修改表名(rename to)
ALTER TABLE 表名 RENAME TO 新表名;
例:改emp为employee
代码:
alter table emp rename to employee
(4)删除字段
ALTER TABLE表名DROP字段名;
3.2.5表删除(drop/truncate打头)
(1)删除表
DROP TABLE [ IF EXISTS]表名;
(2)删除指定表,并重新创建该表。
TRUNCATE TABLE表名; (数据没有了只有一张空表了)
例:drop table if exists employee
查询显示无employee表了。
3.3 DDL总结
3.3.1 DDL-数据库操作
SHOW DATABASES;
CREATE DATABASE数据库名;
USE数据库名;
SELECT DATABASE();
DROP DATABASE数据库名;
3.3.2.DDL-表操作
SHOW TABLES ;
CREATE TABLE表名(字段字段类型,字段字段类型);
DESC表名;
SHOW CREATE TABLE表名;
ALTER TABLE表名 ADD/MODIFY/CHANGE/DROP/RENAME TO ...;
DROP TABLE表名;