MySQL 数据类型
MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。
一、连接数据库
终端输入:
$ mysql -u root -p
输入密码
Enter password:
二、创建“数据库” 和 “表”
【注意】
esc 按键下面的那一个 ~ 按键,坑惨了。 如 表名 或 字段名 与 mysql关键字order相同时 使用----> `order`
反引号是为了区分 MySql 关键字与普通字符而引入的符号,一般的,表名与字段名都使用反引号。
1、数据库的基本操作
a、====创建数据库=======
方法1: 连接mysql成功后,创建名为yjl_test的数据库
mysql> create database yjl_test;
方法2:
使用 mysqladmin 创建数据库
使用普通用户,你可能需要特定的权限来创建或者删除 MySQL 数据库。
所以我们这边使用root用户登录,root用户拥有最高权限,可以使用 mysql mysqladmin 命令来创建数据库。
以下命令简单的演示了创建数据库的过程,数据名为 RUNOOB:
[root@host]# mysqladmin -u root -p create RUNOOB
Enter password:******
b、=====删除数据库======
方法1: 连接mysql成功后,删除名为yjl_test的数据库
mysql> drop database yjl_test;
方法2: 使用 mysqladmin 删除数据库
2、"表"操作
在名为“yjl_test”的数据库中创建名为“student”的表
第一步:使用数据库
mysql> use yjl_test;
第二步:创建表create table 表名();
mysql> create table student(
-> student_id int not null auto_increment,
-> name varchar(50) not null,
-> sex varchar(20) not null,
-> primary key (student_id)
-> )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
字段说明:
字段student_id 类型为 int 不能为空(not null) 值(自动填充/生成 auto_increment)
name 类型为字符串且长度最大为50(varchar(50)) 不能为空(not null)
sex 同name一样
primary key (student_id) 设置student_id为主键
ENGINE=InnoDB 使用innodb引擎
DEFAULT CHARSET=utf8 数据库默认编码为utf-8
AUTO_INCREMENT=1 自增键的起始序号为1
扩展:
1.InnoDB,是MySQL的数据库引擎之一,为MySQL AB发布binary的标准之一。
2.AUTO_INCREMENT会在新记录插入表中时生成一个唯一的数字。希望在每次插入新记录时,自动地创建主键字段的值,可以在表中创建一个 auto-increment 字段。
====【补充】======
查看student表中的所有字段:mysql> desc student;
删除student表: mysql> drop table student;
三、查看所有的数据库 和 数据库对应的所有表
1、显示mysql中所有的数据库
mysql> show databases;
2、使用数据库testmysql
mysql> use testmysql;
3、显示数据库 testmysql中所有的表
mysql> show tables;
四、数据的“增删改查”
1. “添加”数据到数据库yjl_test下面的student表中: insert into
mysql> insert into student(student_id,name,sex)
-> values
-> ("1000","yjl","男");
2、从student表中“删除”数据student_id=2000的数据
mysql> delete from student where student_id='2000';
语法:update 表名 set 字段=新值,… where 条件
把student_id=1000的学生的名字改为yjl
mysql> update student set name='yjl' where student_id='1000';
4、查询
查询整个表: mysql> select *from student;
查询student_id=1000的这条数据: mysql> select *from student where student_id='1000';
limit N : 返回 N 条记录
返回2条数据:mysql> select *from student limit 2;
limit N,M : 相当于 offset N limit M , 从第 N 条记录开始, 返回 M 条记录
返回第2条数据:mysql> select *from student limit 1,2;
符合某个条件的数据的所有条数
select count(*) from `order` where delivery_day='2018-06-25';
5、排序
降序 “order by” “desc”
mysql> select *from student order by student_id desc;
升序 “order by” “asc”
mysql> select *from student order by student_id desc;
符合某个条件的数据 按某个条件降序排列
select *from `order` where delivery_day='2018-06-25' order by goods_price desc ;
6、取出某个字段为“不为空”的所有数据
Select * From table Where id<>'';
Select * From table Where id!='';
7、取出某个字段为“为空”的所有数据
Select * From table Where id='';
Select * From table Where ISNULL(id);
8、MySQL -> Like 使用
like 匹配/模糊匹配,会与 % 和 _ 结合使用。
'%a' //以a结尾的数据
'a%' //以a开头的数据
'%a%' //含有a的数据
'_a_' //三位且中间字母是a的
'_a' //两位且结尾字母是a的
'a_' //两位且开头字母是a的
【举栗子】
查询以 java 字段开头的信息。
SELECT * FROM position WHERE name LIKE 'java%';
查询包含 java 字段的信息。
SELECT * FROM position WHERE name LIKE '%java%';
查询以 java 字段结尾的信息。
SELECT * FROM position WHERE name LIKE '%java';
9、“主键” 与 “外键”
例如:
学生表student(学号(student_id),姓名(student_name),性别(student_sex))
表内有:1,aa,女
student表
student_id student_name student_sex
1 aa 女
课程表subject(课程编号(subject_id),课程名(subject_name))表内有:1,语文
subject表
subject_id subject_name
1 语文
成绩表grade(成绩编号(grade_id),学号(student_id),课程号(subject_id),成绩(grade))表内有:1,1,1,90
grade表
grade_id student_id subject_id grade
1 1 1 90
成绩表的学号就是学生表的学号相对应,并且为学生表的主键,这样就称成绩表中的学号是学生表的外键,同理,成绩表中的课程号是课程表的外键。