学习笔记

sql通用语法
1 sql语句可以单行或多行书写,以分号结尾;
2 sql语句可以使用空格/缩进来增强语句的可读性;
3 mysql数据库的sql语句不区分大小写
4 单行注释:-- 内容 或 # 内容
多行注释: /* 内容 */

sql语句分类

DDL: 数据定义语言,用来定义数据库对象(数据库、表、字段)
 DML:数据操作语言,用来对数据库中的数据进行增删改
 DQL: 数据查询语言,用来查询数据库中表的记录
 DCL: 数据控制语言,用来创建数据库用户,控制数据库的访问权限(创建出来的用户可以控制哪些表,进行增删改中的哪些功能都是由DCL决定)

DDL
数据库操作:
查询所一数据库:

SHOW DATABASES;

sql server 分隔符 IN_sql


查询当前数据库

SELECT DATABASE();

创建

CREATE DATABASE 数据库名称;
CREATE DATABASE IF NOT EXISTS 数据库名称; # 是否存在同名数据库,不存在则创建
CREATE DATABASE 数据库名称 DEFAULT CHARSET 子点击; # 规定字符集

sql server 分隔符 IN_数据库_02


创建成功。

删除

DROP database 数据库名;
DROP database IF EXISTS 数据库名;

sql server 分隔符 IN_表名_03


使用

USE 数据库名;

DDL表操作
查询当前数据库所有表

show tables; # 得首先进入该数据库:use:xxx

查询表结构

desc 表名;

查询指定表的建表语句

show create table 表名;

DDL-表操作-创建

create table 表名(
字段1 字段1类型[comment 字段1注释],
字段2 字段2类型[comment 字段2注释],
......
字段n 字段n类型[comment 字段n注释]
)[comment 表注释];

sql server 分隔符 IN_sql_04

数值类型
类型 大小 有符号范围 无符号范围

tinyint 1byte (-128,127) (0,255)
 smallint 2bytes (-32768, 32767) (0,65535)
 mediumint 3bytes (-8388608,8388607) (0,16777215)
 int 4bytes (-2147483648, 2147483647) (0,4294967295)
 bigint 8btyes
 float 4bytes
 double 8bytes
 decimal 依赖于M精度和D标度

例子

age tinyint unsigned (tinyint类型无符号)

字符串类型

char 0-255bytes 定长字符串
 varchar 0-65535bytes 变长字符串

sql server 分隔符 IN_表名_05

定长字符串,例如char[10],存储1个字符就要占用10给字符的空间;varchar[10]则不一样,存储1个字符就占用1个字符的空间。

日期类型
类型 大小 范围 格式 描述

DATE 3 1000-01-01至9999-12-31 YYYY-MM-DD 日期值
 TIME 3 -838:59:59至838:59:59 HH:MM:SS 时间值或持续时间
 YEAR 1 1901至2155 YYYY 年份值
 DATAYEAR 8 1000-01-01 00:00:00至9999-12-31 23:59:59 混合日期时间和时间值
 TIMESTAMP4 1970-01-01至2038-01-19 03:14:07 混合时间和时间值时间戳

例如:birthday date

案例:

sql server 分隔符 IN_数据库_06

create table emp(
id int comment '编号',
worknum varchar(10) comment '工号',
name varchar(10) comment '姓名',
gender char(1) comment '性别',
age tinyint unsigned comment '年龄',
idcard char(18) comment '身份证号',
entrydate date comment '入职时间'
)comment '员工表';

sql server 分隔符 IN_表名_07

DDL-表操作-修改

添加字段

alter table 表名 add 字段名 类型(长度)[comment ‘注释’];

sql server 分隔符 IN_表名_08


修改数据类型

alter table 表名 modify 字段名 新数据类型(长度);

修改字段名和字段类型

alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释][约束];

sql server 分隔符 IN_java_09

删除字段

alter table 表名 drop 字段名;

sql server 分隔符 IN_sql server 分隔符 IN_10

修改表名

alter table 表名 rename to employee;

sql server 分隔符 IN_java_11

表操作删除
删除表

drop table 表名;
drop table if exists 表名;

sql server 分隔符 IN_sql_12

删除指定表,并重新创建该表

truncate table 表名;

sql server 分隔符 IN_java_13

上图多余的\为失误输入。

删除表时,表中的数据会被全部删除。