mysql基础知识

RDBMS:关系型数据库管理系统
RDBMS相关术语:
  • 列:一列包含了相同类型的数据;
  • 行:一行包含了一组相关联的数据;
  • 冗余:存储两倍数据。降低了数据库的性能,但提高了数据安全性;
  • 主键:主键是唯一的。一张表中只能有一个主键,可以用作索引;
  • 外键:用于关联两个表;
  • 复合键:将多个列作为一个索引键,一般用于组合索引;
  • 索引:是对数据库表中的一列或多列的值进行排序的一种结构;
MySQL是一个关系型数据库
开源、免费、支持多语言、支持大型数据库
1、MySQL的安装:linux平台上使用rpm来安装;
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql-server
chmod mysql:mysql -R /var/lib/mysql        //权限设置
mysql --initialize        //MySQL初始化
systemctl start mysqld          //启动MySQL
//安装成功后,设置root用户的密码:
mysql -u root password "123456";
mysql -u root -p    //登录
2、mysql连接
  • 可使用命令行连接:mysql -u root -p 输入密码后就可以在上面执行人格sql语句了。
  • 客户端连接:输入服务器地址、用户名及密码
3、mysql创建数据库:create database test;
4、mysql删除数据库:drop database test;
5、mysql选择数据库进行操作:use test;
6、mysql数据类型:

1个字节8位长,即包含8位的2进制数

  • 数值类型
    tinyint 1字节 smallint 2字节 mediumint 3字节
    integer 4字节 bigint 8字节 float 4字节 double 8字节
  • 日期和时间类型
    date 3字节 格式:yyyy-mm-dd 日期值
    time 3字节 格式:hh:mm:ss 时间值或持续时间
    year 1字节 格式:yyyy 年份值
    datetime 8字节 格式:yyyy-mm-dd hh:mm:ss 混合日期和时间值
    timestamp 4字节 格式:yyyymmdd hhmmss 混合日期和时间值或时间戳
  • 字符串类型
    char 定长字符串 varchar 变长字符串
    binary varbinary 二进制字符串
    blob 二进制大对象:tinyblob、blob、mediumblob、longblob(可容纳存储范围不同)
    text:tinytext、text、mediumtext、longtext 对应上面的4种blob。
7、mysql创建数据库表

create table test(
test_id int auto_increment,
test_name varchar(20) not null,
create_time datetime,
primary key (test_id)
)engine=InnoDB default charset=utf8;

  • auto_increment,定义列为自增的属性,一般用于主键;
  • primary key,定义列为主键,可设置多个列,用逗号隔开;
  • not null,设置该字段属性不能为null;
  • engine,设置存储引擎,charset设置字符编码;
8、mysql删除数据表:drop table test;
9、mysql插入数据:

insert into test (test_id, test_name, create_time)values (null, “luoluo”, 2020-03-18 12:22:23),(null, “huahua”, 2020-03-19 12:22:23);

10、mysql查询数据:

select column_name,column_name1 from table_name [where 条件] [limit n] [offset m]
注:

  • 查询语句中科院查询一个或多个表,表名之间用逗号隔开;
  • select 命令可以读取一条或多条记录;
  • 可以使用*代替其他字段,select语句会返回表的所有字段;
  • 可以使用where语句来包含任何条件;
  • 可以使用limit属性来设定返回的记录数;
  • 可以使用offset来指定select语句开始查询的数据偏移量;
11、mysql where子句:

select column1,column2 from table1 where condition1 [and [or]] condition2;
注:

  • 可以在where中指定任何条件;
  • 可以使用and或or 指定一个或多个条件;
  • where子句也可以用于delete和update语句;
    操作符:= !=/<> > < >= <=
    where子句的字符串不区分大小写的,可以使用binary来设定where子句区分大小写
12、mysql update更新:

update table_name set column1=new_values [where condition1]

  • 可以同时更新一个或多个字段;
  • 可以在where子句中指定任何条件;
13、mysql delete语句:

delete from table_name [where condition1];

  • 如果没有指定where子句,mysql表中所有记录都会被删除;
  • 可以在where子句中指定任何条件;
  • 可以在单个表中一次性删除记录;
14、mysql like子句:
  • sql like子句中使用%字符来表示任意字符;
  • 如果没有使用%,like子句和=的效果是一样的;
    select column1 from table1 where column1 like condition1
  • 可以使用like子句代替=;
    like通常与%一同使用;
15、mysql union:

union用于连接两个及以上的select语句的结果组合到一个结果集合中;
select column1 from table1 union select column from table2

  • union 默认会去掉重复的数据
  • union all 返回所有结果集,包含重复数据;
16、mysql 排序order by:

使用mysql的order by 来设定排序字段和排序方式;
select * from table1 order by column1 desc

  • asc表示升序,desc表示降序,默认情况下是升序排序的;
17、mysql 分组group by:
  • group by语句根据一个或多个列对结果集进行分组;
  • 在分组的列上我们可以使用count,sum,avg等函数;
    select column1 function(column1) form table1 group by column1
18、mysql 连接的使用join:
  • 使用mysql的join可以联合多表select、update、delete
  • inner join(内连接/等值连接):获取两个表中字段数据匹配的记录;
    select a.test_id, a.test_name, b.test_count from table1 a inner join table2 b on a.test_name = b.test_name
  • left join(左连接):获取左表所有记录,即使右表没有对应匹配的记录;
  • right join(右连接):获取右表的所有记录,即使左表没有对应匹配的记录;
19、mysql null值处理:
  • mysql中使用is null和 is not null来表示字段是否为null,不能使用=和!=
20、mysql正则表达式

mysql中使用regexp来进行正则表达式匹配
^ 匹配字符串的开始位置
$ 匹配字符串的结束位置
. 匹配出‘\n’之外的任意单个字符
[…] 匹配所包含的任意一个字符
[^…]匹配未包含的任意一个字符
p1|p2|p3 匹配p1或p2或p3
{n} n是一个非负数,匹配确定的n次。例如o{2}
{n,m}n和m均为非负整数,n<m 表示最少匹配n次最多匹配m次

21、mysql事务

mysql事务主要用于处理操作量大,复杂度高的数据。
例如,删除一个人员,你既要删除他的基本资料,还要删除与他相关的订单、实例等等,这样这些数据库操作语句就构成了一个事务;
事务控制语句:
begin/start transaction
commit
rollback
savepoint identifier,在事务中创建保存点,一个事务中可以有多个保存点;
release savepoint identifier,删除一个保存点,无保存点执行该语句会抛出异常;
rollback to identifier:把事务回滚到某个保存点;
set transaction:设置事务的隔离级别;

mysql事务处理的两种方法:
1、使用begin、commit、rollback来实现
begin:开始事务
rollback:事务回滚
commit:事务确认
2、使用set来改变mysql的自动提交模式
set autocommit=0 禁止自动提交
set autocommit=1 允许自动提交

22、mysql alter命令

该命令用来修改数据库表名及数据库表的字段;
alter table test drop test_id; 删除test表中的test_id字段;
alter table test add test_id int; 向test表中增加字段并定义数据类型;(默认添加到数据表字段的末尾)
也可使用mysql提供的关键字first设定位第一列,after 字段名(设定位于某个字段之后)
alter table test change test_id id int;修改test_id的字段名及字段类型;
alter table test rename to test1; 修改数据库表名;

23、mysql索引

索引分单列索引和组合索引;
一张表中可以有多个单列索引,但这不是组合索引
组合索引是一个索引中包含多个列
创建索引:create index index_name on table_name(test_id(length))
修改表结构时添加索引:alter table table_name add index index_name(test_id)
删除索引:drop index index_name on table_name;
唯一索引:create unique index index_name on table_name(cloumn_name(length))

24、mysql临时表

临时表只在当前连接可见,当关闭连接时,mysql会自动删除表并释放所有空间。

25、mysql复制表

create TABLE new_table select * from old_table;

26、mysql及sql注入:

sql注入:把sql命令插入到web表单或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的sql指令。

防止sql注入:
1、对用户的输入做校验;(正则表达式或限制长度)
2、不要使用动态拼接sql

发布了23 篇原创文章 · 获赞 3 · 访问量 807
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览