MySQL学习笔记之<入门教程>

数据库形式

数据库→表→记录


二 登录退出数据库

登录:mysql -h 主机名 -u 用户名 -p

  • -h : 该命令用于指定客户端所要登录的MySQL主机名, 登录当前机器该参数可以省略;
  • -u : 所要登录的用户名;
  • -p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项。
mysql -u root -p   回车

登录成功后你将会看到 Welecome to the MySQL monitor... 的提示语。

然后命令提示符会一直以 mysql> 加一个闪烁的光标等待命令的输入, 输入 exit 或 quit退出登录。

数据库操作(CRUD)

C:Creat 创建(创建数据库和表以及修改数据库和表命令类似  都是 create database /alter database或者create table /alter table

①创建数据库

CREATE  DATABASE  [IF NOT EXISTS] db_name    
[create_specification [, create_specification] ...]   []内为可选项

create_specification:     [DEFAULT] CHARACTER SET charset_name  |   [DEFAULT] COLLATE collation_name 

如:

create database if not exists mydb1;

create database if not exsits mydb2 character set gbk;

②创建表

在对一个数据库进行操作时(因为表示数据库的内容), 必须先选择该数据库, 否则会提示错误。

选择数据库语句:use mydb1;

CREATE TABLE table_name
(
field1  datatype,注意字段名放在前面,字段类型放在后面,且每一个字段的隔开字符用逗号“ ,”表示
field2  datatype,
field3  datatype
) character set 字符集 collate 校对规则


field:指定列名(字段) datatype:指定列类型(字段类型)   与Java的类作对比

如:

create table students

(

id int unsigned not null,

name varchar(16) not null,

sex char(4) not null

);    注意每条语句的结尾都必须有;(部分特殊语句可能不需要,但最好有)

③创建记录(数据)

使用 INSERT 语句向表中插入数据。

INSERT INTO table [(column [, column...])]  VALUES (value [, value...]);  其中 [] 内的内容是可选的

注意:①在values中列出的数据位置必须与被加入的列的排列位置相对应。②字符和日期型数据应包含在单引号中。

如:insert into students values(123001,"Jack","女");


有时我们只需要插入部分数据, 或者不按照列的顺序进行插入, 可以使用这样的形式进行插入:

insert into students (name, sex) values("孙丽华", "女");


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------


R:Retrieve 读取、查找

①读取数据库

显示数据库语句:
SHOW DATABASES
显示数据库创建语句:
SHOW CREATE DATABASE db_name

②查找记录

使用select语句,用于查询并显示出来

SELECT [DISTINCT] *|{column1, column2. column3..}  FROM table;

(1)Select 指定查询哪些列的数据。(2)column指定列名。(3)*号代表查询所有列。(4)From指定查询哪张表。(5)DISTINCT可选,指显示结果时,是否剔除重复数据

如:select * from students;

扩展:

1.在select语句中可使用表达式对查询的列进行运算

SELECT *|{column1|expression, column2|expression,..} FROM table;

2.SELECT column as 别名 from 表名;

如:

select name,math+10 as 数学 from students;   在from前面的as别名是用来显示的,在from后的as别名相当于对表的引用,和直接操作表是一样的。如 select d.name as '部门名' from department as d where d.name ='软件部';

3.使用where子句,进行过滤查询(查询特定的行)的数据

如:select * from students where name = 'Jack';

在where子句中经常使用的运算符


Like语句中,% 代表零个或多个任意字符,_ 代表一个字符,例first_name like ‘_a%’;

如:select * from students where name like '张%’;  显示所有姓张的对象

4.使用order by 子句排序查询结果。

SELECT column1, column2. column3..FROMtable order by column asc|desc

①Order by 指定排序的列,排序的列即可是表中的列名,也可以是select 语句后指定的列名。②Asc 升序、Desc 降序 ③ORDER BY 子句应位于SELECT语句的结尾。

如:select * from students order by math desc;  按math成绩降序显示

5.函数

合计函数:select count(*) as 姓张的人数 from students where name like '张%‘ ; 显示有多少个姓张的人; select sum(math) as 数学总分 from students  显示所有学生的数学总成绩

平均值函数:select avg(math) as 数学平均分 from students;显示数学平均分


6.分类别和类别过滤

1.使用group by 子句对列进行分组

SELECT column1, column2. column3.. FROMtable  group by column; 按照column对记录进行分类    

如:

select product,sum(price) as 商品类别总价   from orders group by product   按商品进行分类,并把每一类的总价显示出来

2.使用having 子句组过滤

SELECT column1, column2. column3..
FROM table  group by column having ...

如:

select product from table group by product having sum(price)>100;  把商品分类总价大于100的分类显示出来。

having与where的区别在于having是类别过滤器,where是行(对象)过滤器

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------



U:Update 更新、更改

①更新数据库

ALTER  DATABASE  [IF EXISTS] db_name    [alter_specification [, alter_specification] ...]  []内可选

alter_specification:    [DEFAULT] CHARACTER SET charset_name  |   [DEFAULT] COLLATE collation_name

如 alter database if exists mydb1 character set gbk;

②更新表

1.在表中添加其他列:

ALTER TABLE table
ADD   (column datatype [DEFAULT expr] [, column datatype]...);

如:

在上面员工表的基本上增加一个image列。
alter table employee
add image blob;

2.修改表中的某一列:

ALTER TABLE table
MODIFY   (column datatype [DEFAULT expr] [, column datatype]...);

如:

修改job列,使其长度为60。
alter table employee
modify job varchar(60) default 'teacher';


3.删除某一列

ALTER TABLE table
DROP  (column);

如:

alter table students drop sex; 删除学生表中的sex列


4.修改列的名称

列名name修改为username。
alter table user
change column name username varchar(20); 


5.修改表的名称:Rename table 原表名 to 新表名


③更新记录

使用 update语句修改表中数据。

UPDATEtbl_name    SET col_name1=expr1 [, col_name2=expr2 ...]    [WHERE where_definition]  

UPDATE语法可以用新值更新原有表行中的各列。
SET子句指示要修改哪些列和要给予哪些值。
WHERE子句指定应更新哪些行。如没有WHERE子句,则更新所有的行。

如:

update students set sex='男’ where name like '张%‘;更新所有姓张的性别为男


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------



D:Delete 删除

①删除数据库

DROP DATABASE  [IF EXISTS]  db_name 

如:drop database if exists mydb1;

②删除表

drop table if exists students;

③删除记录(数据)

delete from tbl_name       [WHERE where_definition] 

delete from table_name:按行删除表中的所有记录,但会保留表,适合删除数据量不大的数据,可按条件删除
truncate table table_name:复制原表结构-〉一次性删除整表 -> 自动恢复原表结构,适合删除数据量较大的数据,不能按条件删除
drop table table_name:删除表本身


总结:database和table的各个操作都相似,创建create database mydb1; create table students(...);      查看 show databases; show tables; show create database mydb1;show create table table1;(表特有的desc table1) ;修改时alter database database1  character set gbk;  alter table table1 add score int;删除 drop database mydb1; drop table table1;

而记录都是特有的,创建时insert into students[()] values(...);查看使用select语句;修改使用update,update student set sex='nan' where name like '张%';删除使用delete语句  delete from user where name like  '张%’;





表的约束和关联(为了数据的安全)

①约束

1.定义主键约束
  primary key:不允许为空,不允许重复
删除主键:alter table tablename drop primary key ;
2.定义主键自动增长
    auto_increment(MySQL特有/UUID类生成)
3.定义唯一约束
  unique
4.定义非空约束
  not null
5.定义外键约束
constraint ordersid_FK foreign key(ordersid) references orders(id),

②关联

1.一对一

2.一对多(外键在多方)

3.多对多(外键在关联表中)

一对多可以通过嵌入式SQL语句查询数据



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值