02:sql语句之单表_定义_分类_语法_操作CRUD

1.1、sql语句是什么?

答:sql语句是和数据库交互的语言,用户通过sql语句来操作数据库。

结构化查询语言(Structured Query Language)简称SQL,是关系型数据库管理系统都需要遵循的规范。不同的数据库生产厂商都支持SQL语句,但都有特殊内容。

1.2、sql语句的分类有哪些?

四种语句类型分别是定义D、控制C、操作M和查询Q。

数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等

数据控制语言:简称DCL(Data Control Language),用来定义数据库的访问权限和安全级别,及创建用户。

数据操作语言:简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新。关键字:insert,delete,update等

数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录。关键字:select,from,where等

1.3、sql语句的通用语法有哪些?

SQL语句可以单行或多行书写,以分号结尾;

可使用空格和缩进来增强语句的可读性;

MySQL数据库的SQL语句不区分大小写,关键字建议使用大写;

例如:SELECT * FROM user。

同样可以使用/**/的方式完成注释;

MySQL中的我们常使用的数据类型如下

1.4、DDL之数据库操作:database

创建数据库、指定数据的编码格式:CREATE DATABASE webdb_2 CHARACTER SET utf8;
查看MySQL服务器中的所有的数据库:show database; 
查看某个数据库定义的信息:show create database webdb_1; 
删除数据库:drop database webdb_2; 
查看正在使用的数据库:select database(); 
切换数据库:use webdb_1;

1.5、DDL之表操作:table

USE webdb_1;#使用某一数据库

CREATE TABLE category(
	cid INT PRIMARY KEY,#分类id
	cname VARCHAR(100) #分类名称
);

SELECT * FROM category;#查看表内容
SHOW TABLES;#查看数据库中的表
DESC category;#表的描述
DROP TABLE category;#删除表
SHOW TABLES;
ALTER TABLE category ADD 'desc' VARCHAR(20);#错的
ALTER TABLE category ADD `desc` VARCHAR(20);#修改表添加列
ALTER TABLE category MODIFY 'desc' VARCHAR(50) NOT NULL;#错的
ALTER TABLE category MODIFY `desc` VARCHAR(50) NOT NULL;#修改表中列的长度及约束

ALTER TABLE category CHANGE `desc` description VARCHAR(30);#修改表中列名
ALTER TABLE category DROP description;#删除表中字段

RENAME TABLE category TO category2;#修改表明
ALTER TABLE category2 CHARACTER SET gbk;#修改表的编码字符集

1.6、DML数据操作语言

插入:
-- 向表中插入某些字段
insert into 表 (字段1,字段2,字段3..) values  (值1,值2,值3..); 
-- 向表中插入所有字段,字段的顺序为创建表时的顺序
insert into 表 values (值1,值2,值3..);
注意:
 值与字段必须对应,个数相同,类型相同
 值的数据大小必须在字段的长度范围内
 除了数值类型外,其它的字段类型的值必须使用引号引起。(建议单引号)
 如果要插入空值,可以不写字段,或者插入 null。
例如:
INSERT INTO category(cid,cname) VALUES('c001','电器');
INSERT INTO category(cid,cname) VALUES('c002','服饰');
INSERT INTO category(cid,cname) VALUES('c003','化妆品');
INSERT INTO category(cid,cname) VALUES('c004','书籍');

INSERT INTO category(cid) VALUES('c005');
INSERT INTO category(cname,cid) VALUES('耗材','c006');	
修改:
--更新所有记录的指定字段
update 表名 set 字段名=值,字段名=值,...;
--更新符合条件记录的指定字段
update 表名 set 字段名=值,字段名=值,... where 条件;
注意:
 列名的类型与修改的值要一致.
 修改值得时候不能超过最大长度.
 除了数值类型外,其它的字段类型的值必须使用引号引起
删除:
删除表中所有记录使用delete from 表名; 还是用truncate table 表名;
删除方式:delete 一条一条删除,不清空auto_increment记录数。
truncate 直接将表删除,重新建表,auto_increment将值为零,从新开始。

1.7、DOS操作数据中文乱码问题

问题:
insert into category(cid,cname) values(‘c010’,’中文’);		
ERROR 1366 (HY000): Incorrect string value: '\xB7\xFE\xD7\xB0' for column 'cname' at row 1
解决:
1.在cmd命令窗口中输入:set names gbk;此命令窗口下临时有效。
2.安装目录下修改my.ini文件,重启服务所有地方生效。[不建议]
错误原因:因为mysql的客户端设置编码是utf8,而系统的cmd窗口编码是gbk
show variables like 'character%'; 查看所有mysql内部设置的编码
修改client、connection、results的编码和客户端一致(GBK编码)
#方式1:单独设置
set character_set_client=gbk; 
set character_set_connection=gbk;
set character_set_results=gbk;

#方式2:快捷设置
set names gbk;

1.8、DQL数据查询语言

#创建商品表:
create table product(
	pid int primary key,
	pname varchar(20),
	price double,
	category_id varchar(32)
);
INSERT INTO product(pid,pname,price,category_id) VALUES(1,'联想',5000,'c001');
INSERT INTO product(pid,pname,price,category_id) VALUES(2,'海尔',3000,'c001');
INSERT INTO product(pid,pname,price,category_id) VALUES(3,'雷神',5000,'c001');

INSERT INTO product(pid,pname,price,category_id) VALUES(4,'JACK JONES',800,'c002');
INSERT INTO product(pid,pname,price,category_id) VALUES(5,'真维斯',200,'c002');
INSERT INTO product(pid,pname,price,category_id) VALUES(6,'花花公子',440,'c002');
INSERT INTO product(pid,pname,price,category_id) VALUES(7,'劲霸',2000,'c002');

INSERT INTO product(pid,pname,price,category_id) VALUES(8,'香奈儿',800,'c003');
INSERT INTO product(pid,pname,price,category_id) VALUES(9,'相宜本草',200,'c003');
INSERT INTO product(pid,pname,price,category_id) VALUES(10,'面霸',5,'c003');

INSERT INTO product(pid,pname,price,category_id) VALUES(11,'好想你枣',56,'c004');
INSERT INTO product(pid,pname,price,category_id) VALUES(12,'香飘飘奶茶',1,'c005');

INSERT INTO product(pid,pname,price,category_id) VALUES(13,'果9',1,NULL);
简单查询:
1.查询所有的商品.		select * from product;
2.查询商品名和商品价格.	select pname,price from product;
3.别名查询.使用的关键字是as(as可以省略的).	
   3.1表别名: select * from product as p;
   3.2列别名:select pname as pn from product;	
4.去掉重复值.	select distinct price from product;
5.查询结果是表达式(运算查询):将所有商品的价格+10元进行显示.
   select pname,price+10 from product;
SELECT * FROM product;#查询商品表所有数据
SELECT DISTINCT price FROM product;#价格去重后的商品表数据
SELECT pname,price+10 FROM product;#价格统一加10
SELECT * FROM product WHERE pname = '花花公子';#查询商品名称为“花花公子”的商品所有信息:
SELECT * FROM product WHERE price = 800;#查询价格为800商品
SELECT * FROM product WHERE price !=800;#查询价格不是800的所有商品
SELECT * FROM product WHERE price <>800;
SELECT * FROM product WHERE NOT(price=800);

SELECT * FROM product WHERE price >60;#查询商品价格大于60元的所有商品信息

SELECT * FROM product WHERE price >=200 AND price =<1000;#查询商品价格在200到1000之间所有商品
SELECT * FROM product WHERE price BETWEEN 200 AND 1000;

SELECT * FROM product WHERE price =200 OR price =800#查询商品价格是200或800的所有商品
SELECT * FROM product WHERE price IN (200,800);

SELECT * FROM product WHERE pname LIKE '%霸%';#查询含有'霸'字的所有商品
SELECT * FROM product WHERE pname LIKE '香%';#查询以'香'开头的所有商品
SELECT * FROM product WHERE pname LIKE '_想';#查询第二个字为'想'的所有商品

SELECT * FROM product WHERE category_id IS NULL;#商品没有分类的商品
SELECT * FROM product WHERE category_id IS NOT NULL;#查询有分类的商品

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值