MySQL入门

MySQL入门

背景

学校数据库课程的相关实践使用的是达梦数据库,而实际上,MySQL作为一款性能极佳的轻量级数据库,使用范围极广,非常流行。另外,最近准备和同学一起做一个linux下即时通讯软件,数据库选用MySQL。
综上,决定学一下MySQL。

特点

  • 多用户,多线程
  • 由一个服务器守护程序mysqld和许多不同的客户程序和库组成
  • 快速、易用、健壮
  • windows下不区分大小写,linux下表名区分大小写(?)

基本操作

数据库操作

  1. 创建数据库: create database [if not exists] xxx;( […] 避免创建已经存在的数据库的错误)
  2. 显示数据库: show databases [like “%xxx%xx”];
  3. 选用数据: use xxx;
  4. 删除数据库: drop database [if exists] xxx;([..] 不存在也不会报错)

数据库表操作

  1. 显示数据库表信息:show/describe
        show tables [from db_name] [like wild] 
        show columns from tbl_name [from db_name] [like wild] 
        show index from tbl_name [from db_name] 
        show table status [from db_name] [like  wild] 
        {describe| desc} tbl_name {col_name | wild} 
  1. 插入
insert [into] tbl_name [(col_name,...)] VALUES (pression,...)
insert [into] tbl_name SET col_name=expression

insert可以进行多行插入: insert xxx VALUES (…),(…),(…);
insert into … select语句满足下列条件:
1.查询不能包含一个order by子句
2.insert语句的目的表不能出现在select查询部分的from子句

3. 其余如update、delete等不赘述。

数据类型

数值类型

  • 整数: 常用的为int类型,允许范围在(-2147483648,2147483648)
  • 浮点数:常用的有float,double和decimal类型。允许指定精确度(有效数字个数)和计数方法(小数点后数字个数)

字符串

  • char,varchar,text和blob类型

日期时间类型

运算符

  • 比较运算:默认情况下,比较是不区分大小写的。我们可以用binary关键字来执行区分大小写的运算

函数

数学函数

ABS(x);//返回x的绝对值
2.ACOS(x);//返回x(弧度)的反余弦值
3.ASIN(x);//返回x(弧度)的反正弦值
4.ATAN(x);//返回x(弧度)的反正切值
5.CEILING(x);//返回大于x的最小整数值
6.COS(x);//返回x(弧度)的余弦值
7.COT(x);//返回x(弧度)的余切
8.DEGREES(x);//返回弧度值x转化为角度的结果
9.EXP(x);//返回值e(自然对数的底)的x次方
10.FLOOR(x);//返回小于x的最大整数值
11.GREATEST(x1,x2,x3...);//返回集合中最大的值
12.LEAST(x1,x2,x3,,,);//返回集合中最小的值
13.LN(x);//返回x的自然对数
14.LOG(x,y);//返回x的以y为底的对数
15.MOD(x,y);//返回x/y的模(余数)
16.PI();//返回pi的值(圆周率)
17.POW(x,y)或者POWER(x,y);//返回x的y次幂
18.RAND();//返回0到1内的随机数
19.RADIANS(x);//返回角度x转化为弧度的结果
20.ROUND(x,y);//返回参数x的四舍五入的有y位小数的值
21.SIGN(x);//返回代表数字x的符号的值
22.SQRT(x);//返回x的开方
23.SIN(x);//返回x(弧度)的正弦值
24.TAN(x);返回x(弧度)的正切值
25.TRUNCATE(x,y);//返回数字x截短为y位小数的结果

字符串函数

  • length()函数: 获得一个字符串的长度
  • trim(): 去首尾空格(可设参数选择leading等)
  • concat(): 连接成字符串

日期时间函数

now()、curdate()、curtime()、week()等

加解密函数

1.AES_ENCRYPT(str,key);//返回使用密钥key对字符串str利用高级加密标准算法加密后的结果
2.AES_DECRYPT(str,key);    //返回使用密钥key对字符串str利用高级加密标准算法解密后的结果
3.DECODE(str,key);//使用key作为密钥解密加密字符串str
4.ENCRYPT(str,salt);//使用UNIX crypt()函数,用关键词salt加密字符串str
5.ENCODE(str,key);//使用key作为密钥加密字符串str
6.MD5();//计算字符串str的MD5校验和
7.PASSWORD(str);//返回字符串str的加密版本
8.SHA();//计算字符串str的安全散列算法(SHA)校验和

控制流函数

1.case where[test1] then[result1] ... else[defalut] end;//如果testN为真,则返回resultN,否则返回default
2.case[test] where[val1] then[result1]...else[default] end;//如果test和valN为真,则返回resultN,否则返回default
3.if(test,t,f);//如果test为真,返回t,否则返回f
4.ifnull(arg1,arg2);//如果arg1不是空,返回arg1,否则返回arg2
5.nullif(arg1,arg2);//如果arg1=arg2返回null,否则返回arg1

格式化函数

1.date_format(date,fmt);//依照字符串fmt格式化日期date的值
2.format(x,y);//把x格式化为以逗号隔开的数字序列,y是结果的小数位数
3.inet_aton(ip);//返回ip地址的数字表示
4.inet_ntoa(num);//返回数字所代表的ip地址
5.time_format(time,fmt);//依照字符串fmt格式化时间time值

数据转换函数

cast : 例——select 1+cast('99' as signed);//结果为100

系统信息函数

1.database();//返回当前数据库名称
2.benchmark(count,expr);//将表达式expr重复运行count次
3.connection_id();//返回当前客户的连接id
4.found_rows();//将最后一个select查询(没有以limit进行限制结果)返回的记录行数返回
5.get_lock(str,dur);//获取一个由字符串str命名的并且有dur秒延时的锁定
6.is_free_lock(str);//检查以str命名的锁定是否释放
7.last_insert_id();//返回由该系统自动产生的最后一个auto increment id的值
8.master_pos_wait(log,pos,dur);//锁定主服务器dur秒直到从服务器与主服务器的日志log指定的位置pos同步
9.release_lock(str);//释放由字符串str命名的锁定
10.user()/system_user();//返回当前登录用户名
11.version();//返回MySQL服务器的版本

控制事物行为

MySQL提供了两个变量来控制事务行为:autocommit变量和transaction isolation level变量。
自动提交,默认情况下,MySQL的sql查询一旦被执行,就会自动向数据库提交结果。这种默认的行为可以通过特定的 autocommit变量来进行修改。设置set autocommit=0,随后表的更新将不会被保存,直到明确发出一个commit命令。
事务孤立级,MySQL默认为repeatable read孤立级,可以使用set来修改。

临时表

create temporary table(只针对单一的MySQL会话 过程而存在的,保存在内存中)

调整服务器设置

调整服务器变量,key_buffer_size变量控制MySQL索引缓冲可以使用内存的数量。值越高,索引可以使用的内存越多,性能越好。 一般情况,这个值保持在可使用内存总量的25%到30%。table_cache变量控制表高速缓存可以使用内存的数量,以及在同一时间 内MySQL可以处理表的打开总量。对于有很多数据库和表的非常忙的服务器来说,应该增加这个值,使用set修改。


参考:汇智网相关课程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值