MySQL数据库的使用(1)操作数据库操作表,约束

1.开启和关闭服务
1)在命令窗口运行
net start MySql —开启服务,MySql为服务名
net stop MySql —关闭服务,MySql为服务名

2)通过服务进行开启
	win+r,再输入cmd ,然后输入services.msc

2.登录退出MySQL
mysql -uroot -p*******
mysql -h localhost -P 3306 -uroot -p****** (数据库登录)localhost:IP 3306:数据库端口 root:用户名 *****:数据库密码
exit quit (数据库退出)

3.显示有哪些数据库
show databases;

4.注释
单行注释:-- 注释内容 或者 #注释内容(MySQL特有的注释方式)
多行注释:/* 注释内容 */

DDL:操作数据库和表
1.操作数据库(CRUD)
1.C(Create):增加创建
create database bktest;–bktest:数据库名称
create database if not exists bktest;–如果不存在就创建
create database if not exists bktest character set gbk; — gbk:字符集名称,创建指定字符集的数据库
2.R(Retrieve):查询
*查询所有数据库名称
show databases;
*查看某个数据库的字符集
show create database mysql;–mysql数据库名
3.U(Update):修改
*修改数据库字符集
alter database bktest2 character set utf8;
alter database
4.D(Delete):删除
*删除数据库
drop database bktest2;-- bktest2:数据库名称
drop database if exists bktest2; – 判断bktest2存在就删除
5.使用数据库
*查询当前正在使用的数据库
show database(); –
*切换数据库
use bktest; – bktest:数据库名称
2.操作表
1.C(Create):增加创建
1.语法
create table 表名(
列名1 数据类型1,
列名2 数据类型2,

列名n 数据类型n
); – ()里面写的是字段名,字段类型,最后一列不要写 ‘,’
create table if not esists stuinfo(id int,name varchar(20),age int);
字段类型 整数int
小数double(5,2)
日期date(只包含年月日yyyy-MM-dd)
datetime(年月日时分秒 yyyy-MM-dd HH:mm:ss)
timestemp (年月日时分秒 yyyy-MM-dd HH:mm:ss 如果值为空或者NULL则默认使用本地系统时间)
字符串 varchar(20):最大20个字符,可设置
*复制表
create table 表名 like 表名;
2.R(Retrieve):查询
*查询一个数据库中所有的表名称
show tables;
3.U(Update):修改
1.修改表名
alter table 表名 rename to 新的表名;
2.修改字符集
alter table 表名 character set 字符集名称;
3.添加一列
alter table 表名 add 列名 数据类型;
4.修改列名称,类型
alter table 表名 change 列名 修改后新列名 数据类型;
alter table 表名 modify 列名 新的数据类型;
5,删除列
alter table 表名 drop 列名;
4.D(Delete):删除
*删除表
drop table 表名称;
drop table if exists 表名称;

DML:
1.添加数据
insert into 表名(列名1,列名2,…,列名n) values(值1,值2,…,值n);
2.删除数据
delete from 表名 [where 条件]
*如果不写条件,删除整张表内容
不建议这么使用,使用truncate table 表名; – 删除表,然后创建一张一样的表
3.修改数据
update 表名 set 列名=值,列名=值 [where 条件]

DQL:查询表中的数据
1.语法
select
字段列表
from
表名列表
where
条件列表
groud by
分组字段
having
分组之后的条件
order by
排序
limit
分页限定

2.基础查询
	1.多个字段的查询
		*select name,age from student;
		*select 列名,列名 from 表名;
	2.去除重复
		select distinct 列名 from 表名;
	3.计算列
		*select 列名+列名 from 表名
		SELECT NAME,math,english,math+english FROM student3;
		SELECT NAME,math,english,IFNULL(math,0)+IFNULL(english,0) FROM student3;
	4.起别名
		SELECT NAME,math,english,IFNULL(math,0)+IFNULL(english,0) as 总分 FROM student3;

3.条件查询
	语法:
		1.where子句后面加条件
		2.运算符
			* < , > , <= , >= , = , <>
				查询年龄大于20岁的
				select * from student3 where age>20;
			*  between  and 
				查询年龄在20-30之间的
				select * from student3 where age between 20 and 30;
			* in(集合)
				select * from student3 where age = 22 or age = 19 or age=25;
				select * from student3 where age in (22,19,25); -- 等同于上一行的
			* LIKE -- 模糊查询
				select * from student3 where name like '马%';  -- 所有姓马的
				SELECT * FROM student3 WHERE NAME LIKE '马_';  --%代表所有   _代表后面只有一个字符
			* IS NULL
			* AND 或 &&
			* or 或 ||
			* not 或 !

4.排序查询
	语法:order by 子句
		*order by 排序方式1,排序方式2...
		*asc 升序排列  desc 降序排列
		SELECT * FROM student3 ORDER BY math DESC,english ASC
5.聚合查询:将一列函数作为一个整体,进行纵向的计算
	1.count:计算数量
		SELECT COUNT(NAME) FROM student3;
	2.max:计算最大值
		SELECT MAX(math) FROM student3;
	3.min:计算最小值
		SELECT MIN(math) FROM student3;
	4.sum:求和
		SELECT SUM(math) FROM student3;
	5.avg:平均值
		SELECT AVG(math) FROM student3;
6.分组查询
	1.语法
		group by 
		*SELECT sex,AVG(math) FROM student3 GROUP BY sex;
		注意:这里使用聚合函数,分组字段,其他的没有意义
		SELECT sex,AVG(math) FROM student3 WHERE math >70 GROUP BY sex;
		SELECT sex,AVG(math) FROM student3 WHERE math >70 GROUP BY sex HAVING COUNT(id) > 2;
		where后面不可以跟聚合函数,having后可以跟聚合函数
7.分页查询
	语法:limit 开始的索引  每页查询的条数
	*每页显示3条
	SELECT * FROM student3 LIMIT 0,3;
	SELECT * FROM student3 LIMIT 3,3;

约束:对表中的数据进行限定,保证数据的正确性、有效性以及完整性。
分类:
1)主键约束 primary key
注意:
含义:非空且唯一
一张表只能有一个字段作为主键
主键就是表中的唯一标识

		创建表时添加主键约束
			CREATE TABLE IF NOT EXISTS stu(
				id INT PRIMARY KEY,
				phone_number VARCHAR(20)
			);
			
		删除主键
			ALTER TABLE stu DROP PRIMARY KEY;
		表创建后添加主键
			ALTER TABLE STU MODIFY id INT  PRIMARY KEY;
		自动增长
			概念:如果某一列是数值类型,使用Auto_increment 可以来完成值的自动增长
			
			在创建表时添加
				CREATE TABLE IF NOT EXISTS stu(
					id INT PRIMARY KEY AUTO_INCREMENT,
					phone_number VARCHAR(20)
				);
			删除自动增长
				ALTER TABLE stu MODIFY id INT;
			添加自动增长
				ALTER TABLE stu MODIFY id INT  AUTO_INCREMENT;
	2)非空约束 not null
		1.创建表时添加约束
			CREATE TABLE stu(
				ID INT NOT NULL,
					NAME VARCHAR(20) NOT NULL
			);
		---删除NAME的约束
		alter table stu modify NAME VARCHAR(20);

		2.创建表完之后,添加约束
			alter table stu modify NAME VARCHAR(20) NOT NULL;
	3)唯一约束 unique
		唯一约束可以有NULL,但是只能有一列一条记录为NULL
			CREATE TABLE IF NOT EXISTS stu(
				id INT,
				phone_number VARCHAR(20) UNIQUE
			);
		删除唯一约束
			alter table stu  DROP INDEX phone_number;
			ALTER TABLE 表名 DROP INDEX 列名;
	
		表创建完添加唯一约束
			ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;
	4)外键约束 foreign key
		在创建表时可以添加外键P55
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值