SQL使用
MySQL 连接
首先以管理员模式打开cmd,进入MySQL的安装目录E:\MySQL\Mysql\bin
- 注册MySQL服务
mysqld -install
- 在安装目录下启动MySQL
net start mysql
- 通过用户密码进入数据库
mysql -u root -p
MySQL数据库操作
- 创建数据库
create database 库名;
create database if not exists 库名;
- 删除数据库
drop database 库名;
drop database if exists 库名;
- 展示所有数据库
show databases;
- 切换使用数据库
use 库名;
- 查看当前使用的数据库
select database();
MySQL数据类型
MySQL数据表操作
- 建表
create table 表名(
字段名 类型(长度) 约束,//逗号
字段名 类型(长度) 约束//结尾不用逗号
);//分号
例:
create table student(
id int,
name varchar(10),
gender char(1),
birthday date,
score double(5,2),//double(总长度,小数点后保留的位数)
email varchar(64),
tle varchar(15),
status tinyint
);
create table booklibrary(
id int,
title varchar(100),
author varchar(40)
);
- 删除表
drop table 表名;
- 查看数据库中的表
show tables;
- 查看表结构
desc 表名;
- 查看建表语句
show create table 表名;
数据表内容操作
插入数据:
INSERT INTO 表名(列名1,列名2 ...)VALUES(列值1,列值2...);
-
- 列名与与列值的类型、个数、顺序要一一对应
- 如果插入空值,请使用null
- 插入的日期和字符一样,都使用引号括起来
例:
-
单个所有列:
INSERT INTO booklibrary(id,title,author)
VALUES
(1,"学习 PHP","未知"),
(2,"JAVA 教程","未知"),
(3,"未来世界","未知");
- 多个所有列:
INSERT INTO booklibrary VALUES
(4,"学习 PHP","未知"),
(5,"JAVA 教程","未知"),
(6,"未来世界","未知");
- 指定列:
INSERT INTO 表名(列名1,列名2,…) VALUES(值1,值2,…);
读取数据
- 读取查看数据表所有内容
select * from 表名;
- 读取查看数据表指定列
select 一系列名 from 表名;
select * from stu where age>20;
selct * from stu where age>=20 and age<=30;
= select * from stu where age between 20 and 30;
select * from stu where hire_date between '1998-09-01' and '1999-09-01';
select * from stu where age != 18; - '<>'也是不等于
或者 || = or
in (18,20,22)
select * from stu where age in (18,20,22)
null值不能用等于来比较。需要用is
select * from stu where age is not null;
通配符 : _ 表示单个任意字符 % 表示任意个字符
select * from stu where name like '马%';
select * from stu where name like '_花%';
修改数据
UPDATE 表名 SET 列名1=列值1,列名2=列值2... WHERE 列名=值
update stu set sex = '女' where name = '张三';
update stu set birthday = '1999-12-12', score = 99.99 where name = '张三';
删除数据
delete from 表名 where 条件 //删除语句
delete from stu where name = "张三"
delete from 表名;
排序
排序方式:
ASC 升序排列 默认值
DESC 降序排列
select * from stu order by age asc;
select * from stu order by math desc, englisg asc; //数学成绩一样,英语成绩按照升序排列
Mysql的约束
分类:
约束是作用于表中列上的规则,用于限制加入表的数据。约束的存在保证了数据库中数据的正确性、有效性和完整性。
- 非空约束:关键字是 NOT NULL。保证列中所有的数据不能有null值。
- 唯一约束:关键字是 UNIQUE。保证列中所有数据各不相同。
- 主键约束: 关键字是 PRIMARY KEY。主键是一行数据的唯一标识,要求非空且唯一。
- 检查约束: 关键字是 CHECK。保证列中的值满足某一条件。MySQL不支持检查约束。
- 外键约束: 关键字是 FOREIGN KEY。外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性。
非空约束
CREATE TABLE 表名(
列名 数据类型 NOT NULL,
…
);
ALTER TABLE 表名 MODIFY 字段名 数据类型 NOT NULL;
ALTER TABLE 表名 MODIFY 字段名 数据类型;
唯一约束
CREATE TABLE 表名(
列名 数据类型 UNIQUE [AUTO_INCREMENT],
-- AUTO_INCREMENT: 当不指定值时自动增长
…
);
ALTER TABLE 表名 MODIFY 字段名 数据类型 UNIQUE;
ALTER TABLE 表名 DROP INDEX 字段名;
主键约束
CREATE TABLE 表名(
列名 数据类型,
[CONSTRAINT] [约束名称] PRIMARY KEY(列名)
);
ALTER TABLE 表名 ADD PRIMARY KEY(字段名);
ALTER TABLE 表名 DROP PRIMARY KEY;
实例:
-- 员工表
CREATE TABLE emp (
id INT PRIMARY KEY, -- 员工id,主键且自增长
ename VARCHAR(50) NOT NULL UNIQUE, -- 员工姓名,非空并且唯一
joindate DATE NOT NULL , -- 入职日期,非空
salary DOUBLE(7,2) NOT NULL , -- 工资,非空
bonus DOUBLE(7,2) DEFAULT 0 -- 奖金,如果没有奖金默认为0
);
外键约束
CREATE TABLE 表名(
列名 数据类型,
[CONSTRAINT] [外键名称] FOREIGN KEY(外键列名) REFERENCES 主表(主表列名)
);
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;