数据库的简单使用

1. dos命令下:键入services.msc 启动 Windows服务

2. dos命令下:快速启动或停止一个服务:net start / stop  (服务名称  )    或者    sc  start / stop  (服务名称  )

3. dos命令下:创建一个数据库      creat  datebase   (数据库名称);  删除一个数据库     drop   datebase   (数据库名称)

CREATE DATABASE mydata;
USE mydata;
/*
主键约束:PRIMARY KEY 将编号列设置为主键约束,保证元素的非空性和唯一性
	  AUTO_INCREMENT  实现编号自动增长
*/
CREATE TABLE users(	
uid INT ,
uname VARCHAR(20),
uaddress VARCHAR(200)
);
CREATE TABLE user1(
uid INT PRIMARY KEY AUTO_INCREMENT ,
uname VARCHAR(10),
uaddress VARCHAR(100)
);		
SHOW TABLES;-- 展示所有表的信息
DESC users; -- 展示某个表的结构
DROP TABLE users;-- 删除指定的表

/*为表插入一个新的字段
ALTER TABLE 表名 ADD 列名 数据类型 约束;
*/
ALTER TABLE user1 ADD tel INT;
/*修改列名 数据类型 约束;
ALTER TABLE 表名 MODIFY 列名 数据类型 约束;
*/
ALTER TABLE user1 MODIFY tel VARCHAR(20);
/*修改列名,数据类型 约束
ALTER TABLE 表名 change 旧列名 新列名 数据类型 约束;
*/
ALTER TABLE user1 CHANGE tel newte1 DOUBLE;
/*删除列名,数据类型 约束
ALTER TABLE 表名 drop 列名;
*/
ALTER TABLE user1 DROP newte1;
/*修改表名,数据类型 约束
RENAME TABLE 表名 TO 新表名;
*/
RENAME TABLE user1 TO newuser1;
  4. 数据库增删改查找
CREATE TABLE user2(
number INT ,
product VARCHAR(20),
price VARCHAR(6)
);
-- 将编号列设置为主键约束,保证元素的非空性和唯一性 AUTO_INCREMENT  实现编号自动增长
ALTER TABLE user2 CHANGE number num INT PRIMARY KEY AUTO_INCREMENT;
-- 第一种方式 
INSERT INTO user2 (num,product,price) VALUES(1,'电视机',5500);
-- 第二种方式 省略主键
INSERT INTO user2 (product,price) VALUES('电脑',10000);
-- 第三种方式  注意不能省略主键
INSERT INTO user2  VALUES(3,'微波炉',10000);
-- 批量写入数据
INSERT INTO user2 (product, price) 
VALUES
  ('沙发', 2000),
  ('床', 3000),
  ('桌子', 1000) ;
-- 修改其中的一条或几条数据
-- 格式 UPDATE 表名 SET 列名1 = 值1 , 列名2 = 值2 WHERE 条件;  条件一般是唯一性的条件,所以一般是主键
UPDATE user2 SET product='书包'	, price=100 WHERE num=5;
/*
数据库中几种符号表示
与:and   或 or    非  not    包含关系  in
*/
-- 将num 为5和6 的 product 更新为真皮沙发
UPDATE user2 SET product='真皮沙发' WHERE num=5 OR num=6;
-- 删除表中的数据
DELETE FROM user2 WHERE num=5;	
/*
删除表中数据的方式:
delete from 表名   一条一条删除,不清空 AUTO_INCREMENT的记录数
truncate table 表名  直接将表删除  重新建表,AUTO_INCREMENT将置为零,重新开始
*/
-- 查询数据
SELECT * FROM user2;
-- 查询某个字段的信息
SELECT product, price FROM user2;
-- 查询去掉重复数据
SELECT DISTINCT product FROM user2;
-- 查询中对字段进行临时命名
SELECT product AS 'product1' FROM user2;
-- 查询数据并对数据进行数字运算
SELECT product,price+1000 AS 'newprice' FROM user2;
-- 按条件进行查询
SELECT * FROM user2 WHERE price BETWEEN 2000 AND 10000;
-- 查询价格为2000,5000,,10000的数据元素
SELECT * FROM user2 WHERE price IN(2000,5000,10000);
-- 添加两行数据
INSERT INTO user2(num,product,price) VALUES(5,'真皮沙发',4000),(7,'气垫沙发',2000);
-- 模糊查询   只要有沙发这个词,就显示出来 % 任意字符
SELECT * FROM user2 WHERE product LIKE '%沙发%';
-- 查询4个字符的产品'_'表示一个字符
SELECT * FROM user2 WHERE product LIKE '____';
-- 查询不为空的product
SELECT * FROM user2 WHERE NOT (product IS NULL);
-- 修改数据表中price字段的数据类型
ALTER TABLE user2 MODIFY price DOUBLE;
-- 对数据表中的字段进行排序
SELECT * FROM user2 ORDER BY price; --  升序排列,默认为升序,也可以在末尾加ASC
SELECT * FROM user2 ORDER BY price DESC;  -- 降序排列
-- 对字段中某些信息进行排序,先过滤信息,在排序
SELECT * FROM user2 WHERE product LIKE '%沙发%' ORDER BY price ASC;
/*
使用聚合函数查询计算
*/
SELECT COUNT(*) FROM user2;-- 查询表中有几条信息
SELECT SUM(price) FROM user2;-- 统计price字段的和
SELECT AVG(price) AS 'aveprice' FROM user2;-- 统计平均值
SELECT MAX(price) FROM user2;  -- 统计最大值
-- 分组查询
SELECT SUM(price),product FROM user2 WHERE product LIKE('%沙发%') GROUP BY product;
-- 对分组后的数据再次进行过滤
SELECT SUM(price) AS 'getSum',product FROM user2 WHERE product LIKE('%沙发%') GROUP BY product 
HAVING getSum>3000 ;
/*
where 和 having的区别
where是在分组前对数据进行过滤,having是在分组后对数据进行过滤
where后不可以跟统计函数,having后可以跟统计函数
*/

5.开发过程中处理一对多的问题
在多表的一方添加一个外键,名称一般为主表的名称_id,字段类型一般和主表的主键的字段类型保持一致,为了保障数据的有效性和完整性,可以在多表的一方添加一个外键约束;格式是:alter table 多表名称 add foreign key (外键名称) references 主表(主键名称)

添加外键约束后表的特点:
主表中不能删除从表中已引用的数据
从表中不能添加主表中不存在的数据

6.在开发中处理多对多
引入一张中间表,存放两张表的主键,一般会将这两个字段设置成联合主键,这样就可以将多对多的关系拆分成两个一对多了,为了保证数据的有效性和完整性,需要在中间表中添加两个外键约束

CREATE DATABASE day02;
USE day02;
-- 用户表(user) 
CREATE TABLE USER (                                  
	  id INT AUTO_INCREMENT PRIMARY KEY,                
	  username VARCHAR(50)  -- 用户姓名                                                
	);

-- 订单表(orders)
CREATE TABLE orders (                                                  
	  id INT  AUTO_INCREMENT PRIMARY KEY,                                  
	  price DOUBLE,                                           
	  user_id INT                                       
	);
-- 给订单表添加外键约束
ALTER TABLE orders ADD CONSTRAINT user_fk FOREIGN KEY (user_id) REFERENCES USER(id); 

-- 向user表中添加数据
	INSERT INTO USER VALUES(3,'张三');
	INSERT INTO USER VALUES(4,'李四');
	INSERT INTO USER VALUES(5,'王五');
	INSERT INTO USER VALUES(6,'赵六');

-- 向orders 表中插入数据
	INSERT INTO orders VALUES(1,1314,3);
	INSERT INTO orders VALUES(2,1314,3);
	INSERT INTO orders VALUES(3,15,4);
	INSERT INTO orders VALUES(4,315,5);
	INSERT INTO orders VALUES(5,1014,NULL);
-- 多表查询 
-- 1.内连接——显示的内连接
SELECT user.username,orders.* FROM USER,orders WHERE user.id=orders.user_id
--   内连接——隐示的内连接
SELECT user.username,orders.* FROM USER JOIN orders ON user.id=orders.user_id
-- 2.外连接——左外链接
-- 先展示join左边表中的数据,再根据条件关联查询join右表中的数据,符合条件则展示出来,不符合条件的以Null值展示
SELECT orders.*,user.* FROM USER LEFT JOIN orders ON user.id=orders.user_id
-- 外连接——右外链接
SELECT orders.*,user.* FROM USER RIGHT JOIN orders ON user.id=orders.user_id
-- 3.子查询
--  查询出订单价格>300的用户信息
-- 先查询出订单价格>300的id,再查用户信息
SELECT user.* FROM USER WHERE id IN (SELECT user_id FROM orders WHERE price>300)
-- 查询出订单价格>300的用户信息和相关订单信息
-- 先查询>300的订单信息,再根据关联查询查询出用户信息
SELECT user.username,temp.id,temp.price FROM USER,(SELECT * FROM orders WHERE price>300) AS temp WHERE user.id=temp.user_id


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值