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 外键名称;
posted @ 2022-01-06 14:38  稶郗  阅读(82)  评论(0编辑  收藏  举报