mysql 学习笔记

variables
values
exists


set names
_ci(大小写不敏感)、_cs(大小写敏感)或_bin(二元)结束 (大小写敏感)
创建数据库时的选项:可以设定数据库字符集(character set utf8)和校对集


(collate utf8_general_ci)
创建表时的表选项:表引擎 engine|type=innodb,charset(character set) 


=gbk, collate=校对集 ,comment='注释';
列也可以设置:字符集和校对规则
mysql字符集和校对规则有4个级别的默认设置:服务器级、数据库级、表级和连


接级


使用COLLATE子句,能够为一个比较覆盖任何默认校对规则。COLLATE可以用


于多种SQL语句中。 
使用WHERE: 
select * from pro_product where product_code='ABcdefg' collate 


utf8_general_ci
create table gwp (name varchar(10)) character set gbk  ,collate 


gbk_chinese_ci;
查看已使用的字符集和校对规则:
show variables like 'character%'
show variables like 'collation%'
#显示所有的校对集
Show collation
#显示所有的字符集
show character set


服务器、数据库、表、列字符集,如果某一级别没有指定字符集,则继承上一级



mysql服务器中有六个关键位置使用了字符集的概念,它们分别是:client 、


connection、database、results、server 、system。
client是客户端使用的字符集,相当于网页中的字符集设置<meta http-


equiv="Content-Type" content="text/html; charset=utf-8">。 
connection是连接数据库的字符集设置类型,如果php没有指明连接数据库使用


的字符集类型就按照服务器端默认的字符集设置。
results是数据库给客户端返回时使用的字符集设定,如果没有指明,使用服务器


默认的字符集。


database是数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将


使用服务器安装时指定的字符集设置。
server是服务器安装时指定的默认字符集设定。
system是数据库系统使用的字符集设定。
system一般默认是utf-8字符集,server是最高的字符集设定,database没有单


独设定就按照server的字符集设定。数据库内的每个表和字段也都有字符集的概


念,一般都是根据上一级结构决定自身的字符集,比如表就根据database库的设


定决定自己的字符集,字段根据表来决定自己的字符集。




①我们要告诉服务器,我给你发送的数据是什么编码?character_set_client
②告诉字符集转换器,转换成什么编码?character_set_connection
③查询的结果用什么编码?character_set_results
如果以上三者都为字符集N,可简写为set names N;










为什么一个汉字是两个字符:
“%”可以代表任意长度的字符串,长度可以为0;
“_”只能表示单个字符。
如果要匹配姓张且名字只有两个字的人的记录,(((“张”字后面必须要有两个“_


”符号。因为一个汉字是两个字符,而一个“_”符号只能代表一个字符。???)))






in   not in  any    not all
假设any内部的查询语句返回的结果个数是三个,
那么,
select ...from ... where a>any(...)
->
select ...from ... where a > result1 or a > result2 or a > result3
ALL关键字:
ALL关键字与any关键字类似,只不过上面的or改成and。
SOME关键字:
some关键字和any关键字是一样的功能。




内部联结或等值联结、自联结、自然联结和外部联结
SELECT * FROM items NATURAL JOIN sales;  自然连接
SELECT * FROM items INNER JOIN sales USING ( item_id );使用using让内


部连接实现和自然连接相同的功能




select EMP_DEP,avg(EMP_SALARY),group_concat(EMP_NAME)from 


EMPLOYEES group by EMP_DEP HAVING avg(EMP_SALARY) >=6000;




连接查询
索引的使用
存储过程
触发器的使用




问题:1、alter  tbl_name 新的表选项
          2、为什么浮点小数不精确,定点小数精确




select 子句及其顺序
select   from   where    group by   having   order by  limit




真实的varchar的长度:
记录存在总长度 65535限制。
varchar特点,当 类型数据超过255个字符时,采用2个字节表示长度。
65535-2=65533
整条记录,需要一个额外的字节,用于保存当前哪些字段是null值。
除非所有的字段都不是null,这个字节才可以省略。一个记录,不论有多少个字



存在null,都是使用统一的一个字节来表示。而不是每个字段一个字节。




UNION用于把来自许多SELECT语句的结果组合到一个结果集合中。
用法:
SELECT ...UNION [ALL | DISTINCT]SELECT ...[UNION [ALL | DISTINCT]


SELECT ...]
获得每一个班级内代课最多的讲师。
注意:
数据列是根据列而不是根据名字进行匹配的。
在第一个SELECT语句中被使用的列名称被用于结果的列名称 
默认情况下,会去除重复的数据行,可以使用union all保留重复的数据行。
如要对union的结果作为整体进行排序或limit,(最好对单个地SELECT语句加圆


括号),在后边增加order by 或limit。order by引用的数据列来自第一个select



分别排序,再联合,则需要用括号将各select语句括起来,且order by只能在


limit 出现时才有效。






where  and/or/not/in/not in
通配符%、_ 转义用 \




use db_name;
desc tab_name;
insert into tab_name
select distinct name from class_1;
select name from class_1 limt 4 offest 5;
select class_1.name from studnet.py_1;
select age, name from py_1 order by age desc;




mysql> create table MyClass(
    > id int(4) not null primary key auto_increment,
    > name char(20) not null,
    > sex int(4) not null default '0',
    > degree double(16,2));




create table Class_2(
id int(4) auto_increment 10
);






在命令中utf-8要写为utf8, alter databaes character set utf8;
server无法启动:将Data目录下的'ib%'文件删除
无法删除数据库:将数据库文件夹下的文件手动删除后再drop
删除sql服务:mysqld -remove tl
结构操作DDL
数据操作DML
增删改查
cls 清屏(clear screen)
mysql在windows下默认没有密码。
MyISAM 引擎不支持事务 速度快 
InnoDB  支持事务


info_class
name  gender age
查看校对规则:show collation
查看编码:show variables like "character_set%"
设置字符集时可以设置校对规则,如果不设置校对规则会有一个默认的校对规则



create table class_1(
name varchar(10)
) character set gbk collate gbk_chinese_ci;


select version()查询服务器版本
select database();查看数据库名称
select current_user();
select curdate();/select current_data();
select curtime();/select current_time();
select current_timestamp();/selcet now();
show databases;
use db_name;选择数据库
show tables;
use tb_name;选择表
show charset; 显示当前数据库服务器支持的字符集
show engines;显示当前数据库服务器支持的存储引擎




SHOW STATUS,用于显示广泛的服务器状态信息
SHOW GRANTS,用来显示授予用户(所有用户或特定用户)的安全权限
show create database bd1; 查看标准建库语句
show create table tb1; 查看标准建表语句
show full columns from studentinfo  查看表字段信息
show databases like "Student_"


create database db_name[数据库选项]
drop database db_name 
alter database db_name [修改指令:修改数据库属性opt]
alter database py_1 character set
 gbk
数据库改名问题:1、修改DATA目录下的数据问文件夹的名字
2、利用table的rename命令
3、将数据库内容导出,重新新建数据库,导入数据库内容








判断null,需要使用 is null or is not null来判断,不能直接比较=null


表结构操作:
create tb_name(列结构)
create table py_class(class_no varchar(20),data_start date);
create table test.py_class(class_no varchar(20),data_start date);(跨数据库


操作)
show tables like '%exam%'\g
show databases [like pattern];
describe tbl_name; desc tbl_name;    show columns form tbl_name;
drop table name;
drop table if exists exam_ans;
修改表:修改表名,修改列定义,修改表选项
修改表名:
rename table old_name to new_name;(可同时为多个表改名)
rename table old_name to db_name.new_name;(跨数据库重命名)


修改列:alter table tbl_name [add|drop|change|modify]


增加一列:alter table exam_stu add time varchar(20);
删除一列:alter table exam_stu drop time;
修改列的定义:alter tabel exam_stu modify exam_stu varchar(40);


(Modify 修改列定义)
重命名列名:alter table exam_stu change score fenshu int; (change 修改


列名)
修改表选项:
Alter table_name 新的表选项
alter student_no character set gbk2312;






表数据操作:
创建数据:insert into 表名(字段列表)values(值列表)
如果为所有的字段设置值,可以省略字段列表。
          insert into 表名 vlaues(值列表)
获得数据:select 字段列表 from 表名 查询条件
 select * from class_1 where 1
删除数据:delete from 表名 条件
修改数据:update 表名 set 字段=新值,...,条件




数据类型:
create table class_1(score tinyint unsigned,fenshu tinyint);


浮点数:
定义显示宽度:create table class_1(score tinyint(2));定义显示宽度为2,宽度


小于2的显示宽度2
零填充: crate table class_1(score tinyint(2) zerofill;


create table class_1(
score float(5,2)
);总共5位,2位小数。
定点数:decimal create table class_1(
send_money decimal(10,2)
);
小数自持zerofill




Select select_expr [from tbl_name] [where] [group by] [having] [order by] 


[limit]








二、修改密码。


格式:mysqladmin -u用户名 -p旧密码 password 新密码


1、给root加个密码ab12。首先在DOS下进入目录mysql\bin,然后键入以下命





mysqladmin -u root -password ab12


注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。


2、再将root的密码改为djg345。


mysqladmin -u root -p ab12 password djg345
















1、安装:\mysql\bin>mysqld --install
2、删除:\mysql\bin>mysqld -remove
3、启动:\mysql\bin>net satrt mysql
4、停止:\MySQL\bin>net stop mysql
5、登录:MySQL -u root 
6、修改密码:mysql> update mysql.user set password=PASSWORD(''新密


码'') where User=''root''






一、免安装版mysql安装步骤
1:开始-->运行-->输入cmd命令-->在命令窗口上输入
cd 解压的mysql的bin文件夹目录
回车
例如:cd C:\Documents and Settings\Administrator\桌面\MySQL\MySQL 


Server 5.0\bin 
2:输入mysqld-nt -install命令,回车,会出现Service successfully installed



3:输入net start mysql命令,回车,会出现MySQL服务已经启动成功
4:输入mysql -u root命令,回车,会出现Welcome to the MySQL monitor


数据库操作:
创建数据库:create databse py_1 character set utf8








select current_user();查看当前用户
show grants for current_user;
show grants for 'tl'@'localhost';


use mysql;
select user form user;//查看所有用户的账号
create user 'tl'@'%' identified by 'abc';
rename user tl to cdy;
rename user 'jack'@'localhost' to 'jason'@'localhost';
drop user tl;
drop user 'frank'@'%';
show grants for tl;
grant select cretate on *.* to tl@localhost;
revoke create on class.* from 'tl'@'localhost';
更改口令:set password for tl =password('aaabdc')


--下面是一个授予最大权限的例子,授予的同时会自动创建用户,由于我们没有


设置密码,所以password列查询结果为空
root@localhost[(none)]> grant all privileges on *.* to 'jack'@'localhost'; 
                                       revoke all privileges, grant option from 


'frank'@'%';
GRANT和REVOKE可在几个层次上控制访问权限:
整个服务器,使用GRANT ALL和REVOKE ALL;
整个数据库,使用ON database.*;
特定的表,使用ON database.table;
特定的列;
特定的存储过程。
授权权限的范围:
  ON *.*
  ON  db_name.*
  ON  db_name.table_name
  ON  db_name.table_name.column_name
  ON  db_name.routine_name
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值