一、MySQL数据库sql语句
1.1 sql 命令
database | 数据库 |
table | 表 |
row | 行 |
column | 列 |
user | 用户 |
select | 从数据表中获取数据 |
updata | 更新数据库中的数据 |
delete | 从数据库中删除数据 |
insert into | 向数据表插入数据 |
create database | 创建新数据库 |
alter database | 修改数据库 |
create table | 创建新表 |
alter table | 变更数据库 |
drop table | 删除表 |
1.2 sql 规范
在数据库系统中,sql语句不区分大小写;
sql语句可单行或多行书写,以‘;’结尾;
关键词不能跨多行或简写;
用空格和tab缩进来提高语句的可读性
二、管理MySQL数据库
2.1 查看数据库
查看当前服务器中的数据库
show databases; #注意以;结尾
查看数据库中包含的表
方法一:在库中查看表
use mysql; #use 数据库名
show tables; #查看表
方法二 :在库外查看表
show tables from mysql; #show tables from 数据库名
查看表的结构(字段)
use 数据库名;
describe [数据库名.]表名;
可缩写成:desc 表名;
查看MySQL的版本
mysql -V
2.2 数据类型
field | 字段名称 |
type | 数据类型 |
null | 是否允许为空 |
key | 主键 |
default | 默认值 |
extra | 扩展属性 |
id | 1 3 5 7 |
int | 整型,用于定义整数类型的数据 |
float | 单精度浮点4字节32位 准确表示到小数点后六位 |
double | 双精度浮点8字节64位 |
char | 固定长度的字符类型 用于定义字符类型数据 |
varchar | 可变长度的字符类型 |
text | 文本 |
image | 图片 |
decimal(5,2) | 5个有效长度数字,小数点后面有2位 指定长度数组 |
#Char如果存入数据的实际长度比指定长度要小,会补空格至指定长度,如果存入的数据的实际长度大于指定长度,低版本会被截取,高版本会报错
2.3 创建、删除数据库和表
创建新的数据库(create database)
#建立数据库
create database 数据库名;
#建立数据库并指定字符集utf8mb4
create database 数据库名 charset=utf8mb4;
删除指定的数据库(drop database)
drop database 数据库名;
创建新的表(create table)
use 数据库名;
create table 表名 (字段1 数据类型,字段2 数据类型[,...][,primary key (主键名)]);
#主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。
例如:
use nj;
create table jiangning (id int NOT NULL,name varchar(10),area decimal(8,2),passwd char(48)DEFAULT' ',PRIMARY KEY (id));
#NOT NULL 不允许为空值
#DEFAULT'' 默认值为空#PRIMARY KEY :主键一般选择没有重复并且不为空值的字段
desc jiangning 描述
删除指定的数据表(drop table)
方法一:库内删除
use 数据库名;
drop table 数据表名;
方法二:库外删除
#如不用USE进入库中,则需加上数据库名
drop table 数据库名.数据表名;
2.4 管理表中的数据记录
向数据表中插入新的数据记录(insert into)
insert into 表名(字段1,字段2[,...]) values(字段1的值,字段2的值,...);
例如:
insert into students(id,name,age,passwd) values(1,'lisi',20,'112233' );
insert into students(id,name,age,passwd) values(2,'jiami',22,PASSWORD('123456'));
#PASSWORD('112233'):查询数据记录时,密码字串以加密形式显示;若不使用PASSWORD(),查询时以明文显示
select * from students;
提前新建数据表(注意长度设置)
use mysql;
create table students (id smallint unsigned primary key auto_increment, name varchar(10),age tinyint unsigned, passwd varchar(48));
此处添加数据为中文,注意字符集(默认为拉丁文)是否更改为utf8和utf8mb4
如果/etc/my.cnf没有更改,建立数据库时要指定字符集utf8mb4:
create database 数据库名 charset=utf8mb4;
查询数据表内数据记录(select)
select 字段名1,字段名2[,...] from 表名 [where 条件表达式];
基本操作:
1. #查询全部数据
select * from 数据表名;
例如:
select * from students;
2. #查询指定数据
例如:
select id,name from students where id=2;
更多操作:
3. #以列表方式竖向显示
select * from 数据表名\G;
例如:
select * from students\G;
4. #只显示头2行
select * from 数据表名 limit 2;
例如:
select * from students limit 2;
5. #显示第3行后的2行
select * from 数据表名 limit 3,2;
例如:
select * from students limit 3,2;
修改、更新数据表中的数据记录(update)
update 表名 set 字段名1=字段值1[,字段名2=字段值2] [where 条件表达式];
例如:
update students set age=19 where id=3;
update students set age=25,passwd='111111' where id=2; #同时修改age和passwd
在数据表中删除指定的数据记录
delete from 表名 [where 条件表达式];
例如:
delete from students where id=2;
!!!!注意id并不会顶上去!!!!
2.5 修改名和表结构(alter table)
修改表名 (rename)
alter table 旧表名 rename 新表名;
例如:
alter table students rename xuesheng;
扩展表结构,增加字段(add)
alter table 表名 add 字段;
例如:
alter table xuesheng add address varchar(50) default 'wait get';
#default 'wait get':表示此字段设置默认值 wait get;可与 NOT NULL 配合使用
修改字段(列)名,添加唯一键(change)
alter table 表名 change 旧列名 新列名 数据类型 [unique key];
例如:
alter table xuesheng change name user_name char(30) unique key;
#CHANGE可修改字段名、数据类型、约束等所有项。
验证:
insert into xuesheng values(6,lili,23,234567,NANKING);
失败,因为设置了唯一键,lili不能重复,改成lulu即可
insert into xuesheng values(6,lulu,23,234567,NANKING);
删除字段(drop)
alter table 表名 drop 字段名;
例如:
#删除表中passwd字段
alter table xuexiao drop passwd;