MySQL学习
一、MySQL安装和卸载
详细步骤请见博客资源中的详细步骤
详细安装教程
完全卸载教程
1.安装完毕之后:管理员模式下进入黑窗口启动mysql
2.用命令 mysql -u root -p 进入mysql管理界面
MySQL 一、MySQL安装和卸载 详细步骤请见博客资源中的详细步骤 详细安装教程 完全卸载教程 1.安装完毕之后:管理员模式下进入黑窗口启动mysql 2.用命令 mysql -u root -p 进入mysql管理界面 3.进入界面后更改root密码 update mysql.user set authentication_string=password(‘123456’) where user=‘root’ and Host = ‘localhost’; 4.刷新权限 flush privileges; 5.修改mysql安装目录下的my.ini文件删除最后一句skip-grant-tables 6.配置好环境之后,不需要进入mysql安装目录即可在任意地方启动 7.重新启动mysql即可正常使用 net start mysql // 启动 net stop mysql //结束 8.安装工具SQLyog 二、MySQL语法 1.数据库操作 创建数据库 : create database [if not exists] 数据库名; 删除数据库 : drop database [if exists] 数据库名; 查看数据库 : show databases; 使用数据库 : use 数据库名; 创建数据表 语法:
说明:反引号用于区别MySQL保留字与普通字符而引入的(键盘esc下面的键) 数据值和列类型 列类型:规定数据库中该列存放的数据类型 数值类型 tinyint: 非常小的数据 1字节 smallint : 较小的数据 2字节 mediumint:中等大小的数据 3字节 int: 标准整数 4字节 字符串类型 char[]: 固定长字符串,检索快但废空间 M字符 varchar[]: 可变字符串 变长度 tinytext: :微型文本串 text: 文本串 日期和时间型数据类型 DATE: YYYY-MM-DD,日期格式 TIME: Hh:mm:ss, 时代格式 DATETIME: YY-MM-DD hh:mm:ss TIMESTAMP:YYYYMMDDhhmmss 格式表示的时间戳 YEAR: YYYY格式的年份值 Null值 未知值/没有值 不要用Null进行算术运算,结果仍未Null 数据字段属性: Unsigned:无符号 声明该数据列不允许负数 ZEROFILL:0填充的 不足位数的用0来填充,如int(3),则为005 Auto_inCrement: 自动增长的,每添加一条数据,自动在上一个记录数上加1(默认) 通常用于设置主键,且为整数类型,可定义起始值和步长,当前表设置步长时,只影响当前表,set@@auto_increment_increment=5;影响所有使用自增的表(全局) NULL和NOT NULL:默认为null,如果设置为not null,则该列必须有值 DEFAULT:默认的;用于设置默认值 例如:性别字段:默认‘男’,否则为‘女;若无指定该列的值,则默认值为‘’男’的值 例题:创建一个school数据库,创建学生表(列,字段) ,学号int 登录密码varchar(20) 姓名,性别varchar(2),出生日期(datatime),家庭住址,email 创建表之前 , 一定要先选择数据库 show create database wei //查看数据库的定义 show create table student // 查看数据表的定义 desc student //显示表的结构
数据表的类型: 设置数据表的类型: create table 表名( 省略一些代码 MySQL注释 #单行注释 /**/ 多行注释)engine = myisam(or innodb) show engines #查看mysql所支持的引擎类型(表类型) 适用场合: 节约空间及相应速度–MyISAM 安全性,事务处理及多用户操作数据表=InnoDB 数据表的存储位置 MySQL数据表以文件方式存在磁盘中,包括表文件mysql学习,数据文件,以及数据库中的选项文件 位置:Mysql安装目录\data\下存放数据表,目录名对应数据库名,该目录下文件名对应数据表 *.frm - 表结构定义文件 *.MYD - 数据文件(data) *.MYI - 索引文件(index) 设置数据表字符集 我们可以为数据库,数据表,数据列设定不同的字符集,设定方法为: 创建时通过命令来设置,如果:create table 表名() charset = uft8 如无设定,根据MySQL数据库配置文件my.ini中的参数设定 2.修改数据库 修改表:alter table 修改表名:alter table 旧表名 rename as 新表名 添加字段:alter table 表名 add字段名 列属性[属性] 修改字符:alter table 表名 modify 字段名 列类型[属性] /alter table 表名 change 旧字段名 新字段名 列属性[属性] 删除字符:alter table 表名 drop 字段名 删除数据表 语法:drop table if exists 表 外键: 将一个表的值放入第二个表来表示关联,所使用的值是第一个表的主键值,此时,第二个表中保存这些值的属性成为外键 作用:保持数据一致性,完整性,主要目的是控制存储在外键表中的数据约束,使两张表形成关联,外键只能引用外表中的列的值或适用空值 创建外键 建表时指定外键约束:
删除外键 操作:删除grade表,删除具有主外键关系的表时,要先删子表,后删主表
3.DML语言 数据库的意义:数据存储,数据管理 1.通过sqlyog等管理工具管理数据库数据 - 2.同通过DML语句管理数据库数据 DML:数据库操作语言 用于操作数据库对象中所包含的数据 包括:inset(添加数据语句) updata(更行数据语句) delete(删除数据语句) 添加数据 语法:insert into 表名[(字段1,字段2,字段3…)]VALUES(值1,值2…) 注意:可同时插入多条数据,values后用英文逗号隔开
修改数据 语法:update 表名 set column_name=value[,column_name2 = value2,…][where condition]; 注意:column_name为要更改的数据列 condition为筛选条件,如不指定则修改该表的所有列数据 where条件子句
删除数据 语法:delete from 表名[where condition]; 注意:condition为筛选条件,如不指定则删除该表的所有列数据
TRUNCATE命令 作用:用于完全清空表数据,但表结构,索引,约束等不变 语法:TURNCATE [table] table_name;
注意区别与delete命令: 相同:都能删除数据,不删除表结构,但truncate速度更快 不同:适用truncate table重新设置atuo_increment计时器,适用truncate table不会对事务有影响 测试:
4.DQL语言 DQL(数据查询语言) 1.查询数据库数据,如select语句 2.简单的单表查询或夺标的复杂查询和嵌套查询 3.是数据库语言中最核心最重要的语句 4.使用频率最高的语句 select语法
[]代表可选,{}代表必选 指定查询字段
AS子句作为别名 作用:可给数据列取一个新的别名,给表取一个新的别名,可把经计算或总给的结果用另一个新名称来代替
distinct关键词使用 作用:去掉select查询返回的记录结果中重复的记录(返回所有列的值都相同,只返回一条)
使用表达式的列 数据库中的表达式:一般由文本值,列值,null,函数和操作符等组成 where条件语句 作用:用于检索数据表中符合条件的记录 搜索条件可由一个或多个逻辑表达式组成,结果一般为真或假 逻辑操作符
模糊查询:比较操作符
连接查询 join对比: inner join:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集 left join:左表的记录将会全部表现出来,而右表只会显示符合搜索条件的记录,右表记录不足的地方均为null right join: 左边只会显示符合搜索条件的记录,而右表会全部显示出来,左表记录不足的地方均为null 全连接union:通过union连接的sql它们分别单独取出列数必须相同;不要求合并的列名称相同时,以第一个sql表列名为准
自连接 数据表与自身进行连接,需求:从一个包含栏目ID , 栏目名称和父栏目ID的表中 查询父栏目名称和其他子栏目名称 排序和分页 语法 : ORDER BY ORDER BY 语句用于根据指定的列对结果集进行排序。 ORDER BY 语句默认按照ASC升序对记录进行排序。 如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。
分页:
子查询 什么是子查询? 在查询语句中的WHERE条件子句中,又嵌套了另一个查询语句,嵌套查询可由多个子查询组成,求解的方式是由里及外;子查询返回的结果一般都是集合,故而建议使用IN关键字;
5.MySQL函数 数据函数 SELECT ABS(-8); //绝对值 SELECT CEILING(9.4); //向上取整 SELECT FLOOR(9.4); //向下取整 SELECT RAND(); //随机数,返回一个0-1之间的随机数 SELECT SIGN(0); //符号函数: 负数返回-1,正数返回1,0返回0 字符串函数 SELECT CHAR_LENGTH(‘狂神说坚持就能成功’); //返回字符串包含的字符数 SELECT CONCAT(‘我’,‘爱’,‘程序’); //合并字符串,参数可以有多个 SELECT INSERT(‘我爱编程helloworld’,1,2,‘超级热爱’); //替换字符串,从某个位置开始替换某个长度 SELECT LOWER(‘KuangShen’); //小写 SELECT UPPER(‘KuangShen’); //大写 SELECT LEFT(‘hello,world’,5); //从左边截取 SELECT RIGHT(‘hello,world’,5); //从右边截取 SELECT REPLACE(‘狂神说坚持就能成功’,‘坚持’,‘努力’); //替换字符串 SELECT SUBSTR(‘狂神说坚持就能成功’,4,6); //截取字符串,开始和长度 SELECT REVERSE(‘狂神说坚持就能成功’); /*反转 日期和时间函数 SELECT CURRENT_DATE(); //获取当前日期 SELECT CURDATE(); //获取当前日期 SELECT NOW(); //获取当前日期和时间 SELECT LOCALTIME(); //获取当前日期和时间 SELECT SYSDATE(); //获取当前日期和时间 – 获取年月日,时分秒 SELECT YEAR(NOW()); SELECT MONTH(NOW()); SELECT DAY(NOW()); SELECT HOUR(NOW()); SELECT MINUTE(NOW()); SELECT SECOND(NOW()); 聚合函数 COUNT() 返回满足Select条件的记录总和数,如 select count(*) 【不建议使用 *,效率低】 SUM() 返回数字字段或表达式列作统计,返回一列的总和。 AVG() 通常为数值字段或表达列作统计,返回一列的平均值 MAX() 可以为数值字段,字符字段或表达式列作统计,返回最大的值。 MIN() 可以为数值字段,字符字段或表达式列作统计,返回最小的值 MD5加密 1.简介:MD5是计算机广泛使用的杂凑算法之一,是杂凑算法的基础原理 2.实现数据加密
数值函数: abs(x) – 绝对值 abs(-10.9) = 10 format(x, d) – 格式化千分位数值 format(1234567.456, 2) = 1,234,567.46 ceil(x) – 向上取整 ceil(10.1) = 11 floor(x) – 向下取整 floor (10.1) = 10 round(x) – 四舍五入去整 mod(m, n) – m%n m mod n 求余 10%3=1 pi() – 获得圆周率 pow(m, n) – m^n sqrt(x) – 算术平方根 rand() – 随机数 truncate(x, d) – 截取d位小数 时间日期函数: – 时间日期函数 now(), current_timestamp(); – 当前日期时间 current_date(); – 当前日期 current_time(); – 当前时间 date(‘yyyy-mm-dd hh:ii:ss’); – 获取日期部分 time(‘yyyy-mm-dd hh:ii:ss’); – 获取时间部分 date_format(‘yyyy-mm-dd hh:ii:ss’, ‘%d %y %a %d %m %b %j’); – 格式化时间 unix_timestamp(); – 获得unix时间戳 from_unixtime(); – 从时间戳获得时间 字符串函数: length(string) – string长度,字节 char_length(string) – string的字符个数 substring(str, position [,length]) – 从str的position开始,取length个字符 replace(str ,search_str ,replace_str) – 在str中用replace_str替换search_str instr(string ,substring) – 返回substring首次在string中出现的位置 concat(string [,…]) – 连接字串 charset(str) – 返回字串字符集 lcase(string) – 转换成小写 left(string, length) – 从string2中的左边起取length个字符 load_file(file_name) – 从文件读取内容 locate(substring, string [,start_position]) – 同instr,但可指定开始位置 lpad(string, length, pad) – 重复用pad加在string开头,直到字串长度为length ltrim(string) – 去除前端空格 repeat(string, count) – 重复count次 rpad(string, length, pad) --在str后用pad补充,直到长度为length rtrim(string) – 去除后端空格 strcmp(string1 ,string2) – 逐字符比较两字串大小 聚合函数: count() sum(); max(); min(); avg(); group_concat() 其他常用函数: md5(); default(); 6.事务和索引 事务:将一组SQL语句放在同一批次内去执行,如果一个SQL语句出错,则该批次内所有的SQL都将被取消执行,MySQL事务数理只支持InnoDB和BDB数据表类型 事务的原则: 原子性:要么全部完成,要么全部不完成 一致性:事务必须始终保持系统处于一致的状态,不管在任何给定的时间并发事务有多少 隔离性:隔离状态执行事务,是它们好像是系统在给定时间内执行的唯一操作 持久性:在事务完成以后,该事务对数据库所作的更改便持久的保持在数据库之中,并不会被回滚 基本语法
测试:
索引 索引的作用:提高查询速度,确保数据的唯一性,可以加速表和表之间的连接,实现表与表之间的参照完整性,使用分组和排序子句进行数据检索时,可以显著减少分组和排序的时间,全文检索字段进行搜索优化 分类 主键索引,唯一索引,常规索引,全文索引 主键索引:某一个属性组能唯一标识一条记录,最常见的的索引类型,确保数据记录的唯一性 唯一索引:避免同一个表中某数据列中的值重复,主键索引只能由一个,唯一索引可能有多个 常规索引:快速定位特定数据,index和key关键词都可以设置常规索引 全文索引:快速定位特定数据 备份 – 导出 -w可携带备份条件 导出一张表 – mysqldump -uroot -p123456 school student >D:/a.sql mysqldump -u用户名 -p密码 库名 表名 > 文件名(D:/a.sql)导出多张表 – mysqldump -uroot -p123456 school student result >D:/a.sql mysqldump -u用户名 -p密码 库名 表1 表2 表3 > 文件名(D:/a.sql)导出所有表 – mysqldump -uroot -p123456 school >D:/a.sql mysqldump -u用户名 -p密码 库名 > 文件名(D:/a.sql)导出一个库 – mysqldump -uroot -p123456 -B school >D:/a.sql mysqldump -u用户名 -p密码 -B 库名 > 文件名(D:/a.sql) (编辑:海南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |