目录
sql不区分大小写
一、MySQL连接数据库
三种连接方式:
1、mysql -u用户名 -p密码 2、mysql -u用户名 -p 回车后再输入密码 3、mysql --host=主机名 --user=root --password=密码(可以进行远程连接)
三种退出方式
1、exit 2、quit 3、\q
二、数据库分类
数据库分类
关系型数据库
常见的:mysql oracle db2 sqlserver postgresql sqlite ...
所有关系型数据库都要遵循SQL规范
存储特点: 强调以二维表格形式存储
非关系型数据库
常见的:hbase redis MongoDB
又叫NOSQL数据库,不仅仅是SQL
存储特点: 强调以键值对k=v形式存储
数据库语言分类
DDL: 数据定义语言
常用关键字:CREATE、DROP、ALTER
作用:定义数据库、库中数据查询语言DML:数据操作语言
常用关键字:INSERT、DELETE、UPDATE
作用:操作表中数据DQL:数据查询语言
常用关键字:SELECT、FROM、WHERE
作用:查询表中数据DCL:数据控制语言
三、SQL基础
语法
①空格,换行不影响sql,一般用于格式化代码
②每条sql都以分号 ; 结尾
③sql不区分大小写,但是建议关键字大写字段类型
整数型:常用 INT ,长度默认为11,如果int长度不够就用bigint
字符型:VARCHAR()
浮点型:float或double
decimal(默认是有效位数是10,小数后位数是0)
如:decimal(10,1)
10位,小数点保留1位
日期:date年月日
datetime:年月日时分秒
year:年份字段约束
PRIMARY KEY:主键约束
主键只有一个,且不能为空
添加:建表时字段后面直接加PRIMARY KEY 或建表后ALTER TABLE 表名 ADD PRIMARY KEY(要加主键的名称);
删除时可以直接删:
alter table 表名 drop PRIMARY KEY
不能直接create table(id int primary key)
AUTO_INCREMENT: 自动递增,唯一,一般配合主键一起用
添加:建表时字段后面直接加PRIMARY KEY AUTO_INCREMENT,
Foreign key:外键约束外键可以有多个
添加时:alter table 表名 drop foreign key 外键约束的名称或者建表时再字段后面加foreign key
因为外键有多个,所以删除时要有字段名:
alter table 表名 drop foreign key 字段名;UNIQUE:唯一约束
唯一约束可以有多个
保证指定的列或列组合中的数据是唯一的,但允许NULL值。
添加:建表时字段后面直接加UNIQUE
因为唯一约束有多个,所以删除时要有字段名:
alter table 表名 drop unique 字段名;非空约束:NONULL
非空约束可以有多个,但是不能为空
确保指定列的所有数据行都必须有值,即不允许NULL值。
添加:建表时字段后面直接加NONULL
因为非空约束有多个,所以删除时要有字段名:
alter table 表名 drop NONULL 字段名;DEFAULT:默认约束
默认约束可以有多个
在插入数据时,如果某列没有给定具体的值,系统会自动为该列生成一个默认值。
添加:建表时字段后面直接加DEFAULT
因为默认约束有多个,所以删除时要有字段名:
alter table 表名 drop DEFAULT 字段名;
四、数据库的增删改查
创建数据库
常用格式:
CREATE DATABASE 库名;
标准格式:
create database [if not exists] 数据库名;
其中 if not exists为如果没有就创建,可以省略
创建时默认字符集就是utf8使用数据库:
use 库名;
删除数据库
drop database [if exists] 数据库名;
查看所有数据库名称
show databases;
查看当前使用的数据库
select database();
查看数据库的建表语句
show create database 数据库名;
五、数据库中表的增删改查
创建表
CREATE TABLE 表名(字段名 字段类型 [字段约束]);
如:
CREATE TABLE student( ID INT, NAME VACHAR(8) AGE INT );
注意:创建表时,关键字不能作为字段名,如果实在要用关键字做字段名,要用反引号``括起来
创建后查看表中字段
DESC 表名;
查看表的建表语句
show create table 表名;
删除表
drop table [if exists] 表名;
修改表名
rename table 旧表名 to 新表名;
修改时约束、类型也可以修改
查看所有表show tables;
六、表中字段的增删改查
以下[ ]里的,表示使用时可加也可不加
添加字段
alter table 表名 add [column] 字段名 字段类型 [字段约束];
删除字段
alter table 表名 drop [column] 字段名;
修改字段
修改表中字段本质就是修改表
alter table 表名 change [column] 旧字段名 新字段名 字段类型 [字段约束];
查看字段
desc 表名;
七、表中记录(数据)的增删改
查询内容太多,在另外一篇文章
插入数据
一次插入一个数据
insert into values(值);
一次插入多个数据,插入多个时用逗号隔开
insert into values(值1),(值2),(值3);
注意:直接插入数据时,值要与字段对应并且类型正确
删除数据两种删除,建议用truncate,delete清空数据后再插入数据,自增顺序会按照清空前的顺序继续延续下去
delete from 表名 [where 条件];
truncate 清空数据,同时自增顺序也会被重置
truncate [table] 表名;
修改数据
update 表名 set 字段名 = 字段值 [where 条件];