MySQL基础语法

Posted 明哥丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL基础语法相关的知识,希望对你有一定的参考价值。

net start mysql57
net stop MySQL57

mysql -h localhost -u root -p

查看引擎
show engines;
show variables like ‘%storage_engine‘;

show databases;

创建数据库
create database test_db;

show create database test_db;

删除数据库
drop database test_db;

选择数据库
use test_db;

查看当前选择的数据库
select database();

查看表
show tables;

创建表
create table tb_l
(
id INT(11),
name VARCHAR(25),
deptId INT(11),
salary FLOAT
);

指定表主键,在创建时: id INT(11) primary key
或者在salary FLOAT,后加primary key(id)
主键由多个字段组成, primary key(id,deptId)

create table tb_2
(
id INT(11) primary key,
name VARCHAR(25),
deptId INT(11),
salary FLOAT
);

create table tb_3
(
id INT(11),
name VARCHAR(25),
deptId INT(11),
salary FLOAT,
primary key(id,deptId)
);

添加主键约束,使用 ALTER TABLE 语句添加主键,必须把主键列声明为不包含 NULL 值(在表首次创建时)。
alter table tb_3 add primary key (id);

删除主键 alter table tb_3 drop primary key;


外键约束

一个表中的一个字段是另一个表的主键,
如员工表tb_4的部门Id: deptId
和部门表tb_dept的主键id关联

deptId为外键,tb_4为从表(子表)
tb_dept为主表(父表)

外键约束
create table tb_dept
(
id INT(11) primary key,
name VARCHAR(25),
location VARCHAR(50)
);

create table tb_4
(
id INT(11) primary key,
name VARCHAR(25),
deptId INT(11),
salary FLOAT,
constraint fk_4_dept foreign key(deptId) references tb_dept(id)
);

在表tb_4上添加了名称为fk_4_dept的外键约束,外键名称为deptId,其依赖于表tb_dept的主键id
);之间可加engine=指定引擎,外键关联的表需要引擎相同

alter table tb_4 add foreign key (deptId) references tb_dept(id);
alter table tb_4 add constraint fk_4_dept foreign key (deptId) references tb_dept(id);//有命名

 

非空约束not null
唯一性约束nuique
create table tb_5
(
id INT(11) primary key,
name VARCHAR(25) not null,
deptId INT(11) nuique,
salary FLOAT
);


create table tb_6
(
id INT(11) primary key,
name VARCHAR(25),
deptId INT(11),
salary FLOAT,
constraint sth unique(name)
);

默认值
create table tb_7
(
id INT(11) default 1111
);

自动增加,一个表只能有一个字段使用auto_increment
初始值为1,每增加一条记录,字段值自动加1
且该字段必须为主键的一部分
字段需为整数类型 TINYINT SMALLIN INT BIGINT

create table tb_8
(
id INT(11) primary key auto_increment,
);


查看表的字段信息
describe/desc tb_2;

查看表详细结构
show create table tb_2;

修改表名
alter table tb_2 rename tb_1; rename后可加一个to

修改字段名
alter table tb_2 change id idd int(20); //可以只改字段的数据类型

修改字段的数据类型
alter table tb_2 modify id VARCHAR(30); //之后还可加约束条件not null、first、after等
修改字段的排列位置
alter table tb_2 modify name varchar(50) first; //或者after另一个字段

添加字段
alter table tb_2 add loc VARCHAR(50);
其后可添加约束条件
alter table tb_2 add c1 VARCHAR(10) not null;

alter table tb_2 add c2 VARCHAR(10) not null first; //添加c2为第一列

alter table tb_2 add c3 VARCHAR(10) after id; //添加到指定列后面


删除字段
alter table tb_2 drop c2;

更改表的存储引擎
alter table tb_2 engine=MyISAM;
可用show create table tb_2;查看

删除表的外键约束
alter table tb_5 drop foreign key fk_4_dept;

删除没有被关联的表
drop table if exists tb_2, tb_3; //if exists用于判断表是否存在

删除被其他表关联的主表
可以先删除子表,再删除父表
也可先删除外键约束再删除主表


删除表中所有数据
delete from tb_2;


数据库数据类型
1. 整数类型 tinyint(1个字节)、smallint(2个字节)、mediumint(3个字节)、int(4个字节)、bigint(8个字节)
id int(11), 11表示显示宽度
year int(4) 只显示4位数字的宽度
小于宽度用空格填充,大于宽度但不超过取值范围,依然可以插入而且能显示出来

浮点小数类型 float(4个字节)、double(8个字节)
定点小数类型 decimal(m,n) 压缩的‘严格‘定点数 m+2个字节
m表示精度,表示总共的位数
n表示小数位数
create table tmp(
x float(4,1),
y double(4,1),
z decimal(4,1)
);

insert into tmp values(5.12, 5.15, 5.123);

select * from tmp;
x y z
5.1 5.2 5.1
z被截断有警告



2.日期/时间类型 year(1个字节)、time(3个字节)、date(3个字节)、datetime(8个字节)、timestamp(4个字节)
3.字符串类型 char固定长度、varchar变长、binary、varbinary、blob、text、enum、set等,分文本字符串和二进制字符串

 

 

 

 

create table fruits(
f_id char(10) not null,
s_id int not null,
f_name char(255) not null,
f_price decimal(8,2) not null,
primary key(f_id)
);

insert fruits (f_id,s_id,f_name,f_price)
values(‘a1‘,101,‘apple‘,5.2),
(‘b1‘,101,‘blackberry‘,10.2),
(‘bs1‘,102,‘orange‘,11.2),
(‘bs2‘,105,‘melon‘,8.2),
(‘t1‘,102,‘banana‘,10.3),
(‘t2‘,102,‘grape‘,5.3),
(‘o2‘,103,‘cocount‘,9.2),
(‘c0‘,101,‘cherry‘,3.2),
(‘a2‘,103,‘apricot‘,2.2),
(‘l2‘,104,‘lemon‘,6.4),
(‘b2‘,104,‘berry‘,7.6),
(‘m1‘,106,‘mango‘,15.7),
(‘m2‘,105,‘xbabay‘,2.6),
(‘t4‘,107,‘xbababa‘,3.6),
(‘m3‘,105,‘xxtt‘,11.6),
(‘b5‘,107,‘xxxx‘,3.6);

select f_id,f_name from fruits;
select *from fruits;
desc fruits;
show create table fruits;


select f_id, s_id, f_name, f_price from fruits;
select *from fruits where f_price<=10;
select *from fruits where f_price between 2 and 6;

select s_id,f_name,f_price from fruits where s_id in (101,102,105) order by f_name desc;//降序
select s_id,f_name,f_price from fruits where s_id not in (101,102,105) order by s_id asc;//升序

select *from fruits where f_name like ‘b%‘;  //以b开头
select *from fruits where f_name like ‘%g%‘;  //含有g
select *from fruits where f_name like ‘b%y‘;   //以b开头 y结尾
select *from fruits where f_name like ‘____y‘; //以y结尾,前面有几个_就有几个字符

 

以上是关于MySQL基础语法的主要内容,如果未能解决你的问题,请参考以下文章

MySQL基础语法之多表连接查询

mysql系列3 SQL语法基础

mysql 基础语法

学习mysql语法--基础篇

Mysql 基础语法

MySQL基础语法命令