《MYSQL入门很简单》

前言:此文章为读书笔记,涉及到书本大部分内容,供学习使用。
schema,提要纲要,column列。row行

1show databases;
显示所有数据库

2.常用命令:

create database  mysql_shiyan; #穿件数据库
use mysql_shiyan; #启用某个数据库
create table A (id int(10),name char(20),phont int(12));#创建表格A及表格A中的表头详细信息
create table B ( menorwomen char(10),age int(3));#创建表格B
insert into A(id,name,phont) values(01,"lengqian",12344444);#添加信息的三种方法。。。
insert into A(id,phont) values(02,345666768);
insert into A values(03,"zouqian",4456465);
select * from A;#显示表格A内容,表格样式
drop database mysql_shiyan;#删除

3.约束类型

  • primary key,主键:主键 (PRIMARY KEY)是用于约束表中的一行,作为这一行的唯一标识符,在一张表中通过主键就能准确定位到一行,因此主键十分重要。主键不能有重复且不能为空。还有一种特殊的主键——复合主键。主键不仅可以是表中的一列,也可以由表中的两列或多列来共同标识
  • foreign key,外键:外键 (FOREIGN KEY) 既能确保数据完整性,也能表现表之间的关系。一个表可以有多个外键,每个外键必须 REFERENCES (参考) 另一个表的主键,被外键约束的列,取值必须在它参考的列中有对应值。
  • default ,默认键:默认值约束 (DEFAULT) 规定,当有 DEFAULT 约束的列,插入数据为空时,将使用默认值。
  • unique ,唯一:唯一约束 (UNIQUE) 比较简单,它规定一张表中指定的一列的值必须不能有重复值,即这一列每个值都是唯一的。
  • not null,非空:非空约束 (NOT NULL),听名字就能理解,被非空约束的列,在插入值时必须非空。在MySQL中违反非空约束,不会报错,只会有警告

4.关键字

1.SELECT

1.select:从一个或多个表中检索信息。
SELECT id FROM people;#会检索id列的所有id号码
SELECT * FROM people;#会检索people表格的所有列
SELECT DISTINCT id FROM people;检索出来不同的id号码
SELECT id
FROM people
LIMIT 5,8;#从id列的第6行检索出来8个id号码。

2.子句clause

SELECT id,name,price
FROM people
ORDER BY prince;#此处的子句用来排序的,以prince列来排序,默认是从小到大,从a到z。
SELECT id,name,price
FROM people
ORDER BY prince DESC;#倒序,descend下降

拓展:结合limit和DESC可检索最大或最小的数字:
SELECT id,name,price
FROM people
ORDER BY prince
LIMIT 1;

3、WHERE

SELECT id,name,price
FROM people
WHERE price = 250;#检索出来prince为250的行,多个就多个!

4、LIKE操作符号,wildcard,通用符,用来匹配一部分的特殊字符

%,代表是0,1甚至无数个字符。    

SELECT id,name,price
FROM people
WHERE name LIKE %leng%;#检索name列中,xxxlengxx的行。%就是代替字符,leng%,检索前面四个字符是leng, l%g,检索首字符是l,最后字符是g的对象。

_,下划线,只能匹配单个字符
SELECT id,name,price
FROM people
WHERE id LIKE 1_;#只能是一个字符

5正则表达式regexp

.表示任意一个字符:
SELECT id,name,price
FROM people
WHERE id REGEXP ".00";#

or,|,这个两个都是代表或:
SELECT id,name,price
FROM people
WHERE prince LIKE "100 or200 or300";#匹配这三个数字的prince列

[xyz],匹配字符集中任何一个,记住,是一个,等同于"x|y|z"
[^xyz],匹配XYZ以外任何字符,一个或多个。

重复元字符
*   匹配前面字符0或者无数次
+   匹配前面字符1或者无数次
?       匹配前面字符0或者1次
{n}     匹配前面字符n次
{n,}    匹配至少n次
{n,m}   匹配前面字符n到m次

定位元字符
^       第一位
$      最后

SELECT id,name,price
FROM people
WHERE peince REGEXP "^[0-2]{3}" 1;#匹配第一位是0,1或者2一共3次的字符串,比如012,221xx,222xx等等.

10创建计算字段,field

作用:


  • 将不同表列中信息,用合适的格式组合起来,作为我们需要的信息,比如,name列,country列,计算 SELECT CONCAT(name,"(",country,")") FROM xxx;结果就是lengqian(China)
  • 执行算数计算,将已有信息经过简单运算,直接输出我们需要的结果

SELECT id, <br>
price, <br>
quantity, <br>
prince*quantity AS expanded_prince  #计算结果返回,还有+-/基本运算符号。 <br>
FROM list <br>
ORDER BY id; #最终显示的列一共有4列,最后一列是我们的计算结果。</li>

11使用数据处理函数

1,Upper()函数,转大写:

SELECT name,Upper(name) AS cap_name
FROM list
ORDER BY name;#会出现name,cap_name列,后者字母全部为大写。

2,日期时间处理函数:

SELECT name,price 
FROM list
WHERE DATE(lq_date)="2017-8-24";#从表中lq_date列中选择日期为2017-8-24的行。
注意:日期格式一定是yyyy-mm-dd
还有TIME()函数

12汇总数据

函数有:AVG(),COUNT(),MAX(),MIN(),SUM(),average平均

SELECT AVG(s_price) AS avg_price 
FROM producrs;#将products表中的s_price列的所有行数据取平均数,返回。

SELECT COUNT(*) AS cou_row 
FROM producrs;#将products表中的列数计算,返回。

SELECT AVG(s_price) AS avg_price 
FROM producrs
WHERE pro_name="xiaomi";#将products表中的xiaomi价格取平均数,返回。

也可多个函数一次操作
SELECT AVG(s_price) AS avg_price ,
MAX(sprice) AS max_prince,
MIN(sprice) AS min_price,
FROM producrs;

13分组数据

将原数据按照自己的意愿分成一组组我们需要的数据,比如在这里,我们需要知道每一种产品及其总数。

SELECT product,SUM(amount_price) AS sum_product     #选择product列,并创建sum_product列
FROM table
GROUP BY product #group by          #按照product进行分组。
HAVING sum_product>2000;                    #总数不得少于2000,HAVing可用于分组
                                            #order仅适用于行,having可代替order
注:sum改为COUNT(*)就是返回个数

14使用子查询

15联结表

大概意思就是,一定的语句将两个表格A,B联系起来,返回我们需要的信息:
例如A中有sid,sname列,B中有id,mark列,
我们需要从B的marK列中找到mark分数低于60的,并且在A中学生sname名字

SELECT sname,sid,id,mark #sname,sid等等出场顺序不同,导致后面列的顺序不同
FROM A,B
WHERE A.sid=B.id and mark>=60; #WHERE语句表明符合一定条件,注意“完全限定列名”

20更新和删除数据

UPDATE,DELETE
UPDATE student

SET sname="lengqian"
WHERE sid=100;将sid=100这一列的snme改为lengqian

DELETE student
WHERE sid=100;#删除sid=100这一列

21创建和修改表

创建新表:
CREATE TABLE a(aid int NOT NULL AUTO_INCREMENT,  #常见aid列,并且自动增加
aname char(20) NOT NULL, #不可为空
aprice char(10) NULL DEFAULT 1000, #不赋值的时候,默认价格为1000
PRIMARY KEY(aid) #设计主键,为aid
)

新增列:
ALERT TABLE a
ADD alocation char(20);

删除列:
ALERT TABLE a
DROP COLUMN slocation;

删除表:
DROP TABLE a;

重命名表:
RENAME TABLE a  TO b;

22使用视图

视图,即是虚拟的表,就是按照我们一定的需求,从原表格中生成的一个表格。

CREATE VIEW pricenotnull AS
SELECT price 
FROM a
WHERE prince IS NOT NULL;#将重新生成的表格,成为我们需要的视图

23使用存储过程

好比一个模块,将我们的一些列语句打包成为一个过程,procedure过程

CREATE PROCEDURE avgprice ()
BEGIN
SELECT AVG(price) AS avgprice
FEOM product;
END;

24使用游标

cursor,光标,游标

25触发器

就是在执行了特定语句时,程序会自动执行相关操作。用INSERT,DELETE和UPDATE三种,仅对于表才能执行,视图及虚拟表格都不行。

例如,,每次新增一个订单的时候,程序自动从库存总量中减掉该订单的数量,返回我们需要的剩余总量。

28安全管理

就是对数据库的操作者进行分类,root用户和普通用户,防止错误操作带来的数据错误。

1显示所有用户:

USE mysql;
SELECT user FROM user;#就可以显示所有的用户了

2新建用户:

`CREATE USER lengqian IDENTIFIED BY "lengqian"`

3查看并编辑用户的权限:

SHOW GRANTS FOR lengqian;


GRANT SELECT ON product.* TO lengqian;#赋予lengqian用户在product数据库所有表格的select操作

4更改用户密码:

SET PASSWORD FOR lengqian =PASSWOED("lengqianlengqian");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值