MySql

mysql和oracle的区别

oraclemysql
数据库有一个, 数据库名一般默认情况下叫: orcl用户默认有一个, 这个用户叫 root
在数据库下有很多用户在用户下有很多数据库
用户下有很多数据库表每个数据库中有若干个数据库表

MySQL的安装以及服务启动

mysql的启动

  • 查看mysql服务器是否已经启动
# 查看mysql服务器是否已经启动
# 查看状态
$ systemctl status mysqld 
  • 启动mysql
$ systemctl start mysqld 
  • 关闭mysql
$ systemctl stop mysqld 
  • 重新启动mysql
$ systemctl restart mysqld 
  • 开机启动mysql
$ systemctl enable mysqld 
  • 关闭开机启动mysql
$ systemctl disable mysqld

登录mysql服务器

# mysql的默认端口的 3306
# 本地连接不需要使用-h, 如果数据库使用默认端口不用指定-P
$ mysql -u 用户名 -p  -h mysql服务器IP -P mydql服务器端口  # 回车, 提示输入密码

# 如果安装mysql之后有一个临时密码, -p后边跟临时密码, 这个命令不能登录
$ mysql -u用户名 -p密码

数据库的CURD

对数据库进行增(Create)、改(Update) 、查(Retrieve) 、删(Delete)操作。

查看数据库

  • 显示所有数据库
mysql> show databases;
  • 显示创建数据库的语句信息
mysql> show create database 表名;

使用数据库

我们以root用户登录, 用户下有很多数据库, 需要指定, 当前使用哪一个数据库, 操作的就是那个数据库中的数据

mysql> use 数据库名;

创建数据库

-- IF NOT EXISTS 表示只有数据库不存在的时候才创建,如果存在同名就不再执行该语句
-- create_specification是建库的一些选项
-- 关键字不区分大小写
CREATE {DATABASE} [IF NOT EXISTS] db_name
    [create_specification [, create_specification] ...]

创建一名为myTest的数据库

mysql> create database myTest;

创建一个使用 latin1 字符集的数据库

mysql> create database myTest character set latin1;  /* utf8 */

修改数据库

-- 修改字符集, 不能改名
alter database itcast character set utf8;

删除数据库

drop database 数据库名;

表的CURD

对表本身进行操作:创建,查看,修改,删除

创建表

  • mysql中表名区分大小写, 列名不区分大小写

    数据类型

    类型说明取值范围
    tinyint很小整数1字节
    smallint小整数2字节
    mediumint中等3字节
    int普通四字节
    bigint打整数8字节
    float单精度浮点数值4字节
    double双精度浮点数值8字节
    decimal压缩的定点数值M+2字节
  • float/double: 指定精确到小数点以后第几位, 比如: 精确到后3位

  • 通过计算得到一个数据: 12.345678

  • 这个数的678会被抹掉

decimal

  • 完整的保存精度, 最少有小数后有两位
    示例:

    12.3 保存为: 12.30

日期类型

|数据类型| 格式
|:--|:--:|
date|YYYY-MM-DD
time|HH:MM:SS
year|YYYY
datetime|YYYY-MM-DD HH:MM:SS
timestamp|YYYYMMDD HHMMSS

字符类型

类型说明
cahr定长字符串
varchar变长字符串
tinyblob不超过255个字符的二进制字符串
tinytext短文本字符串
blob二进制形式的长文本数据
text长文本数据
mediumblob二进制形式的中等长度文本数据
mediumtext中等长度文本数据
logngblob二进制形式的极大文本数据
longtext极大文本数据
create table 表名(
    列名 text [default 'xxx'],
    列名 类型 [default value],
    类名 类型 [default value],
    ......
);

修改表

  • 修改表名
-- oracle和mysql相同
rename table oldN to newN;
  • 添加一个字段
-- oracle
alter table 表名 add 列名 列的类型;

-- mysql
alter table 表名 add column 列名 列的类型;
  • 修改一个字段
-- oracle
alter table 表名 modify 列名 列的类型;

-- mysql
alter table 表名 modify column 列名 列的类型;
  • 删除一个字段
-- mysql和oracle相同
alter table 表名 drop column;


-- mysql中没有对对字段的rename操作
  • 修改表的字符集
alter table 表名 character set utf8;

删除表

drop table 表名;

-- oracle中可以这么做, mysql中不行
drop table 表名 purge;

查看表

查看当前数据库下的数据库表

-- 当前使用的数据库下的表
mysql> show tables;
  • 查看指定表的创建语句
mysql> show create table 表名;
  • 查看表结构
mysql> desc 表名;

表数据的CURD

  • 插入数据
-- 在values(列的值, 列的值, ....)中将表有的字段值都指定出来的时候, 列名可以省略
insert into 表名[(列名, 列名, ...)] values(列的值, 列的值, ....);
  • 更新数据
update 表名 set 列名=新值 where 列名=;
  • 删除数据
delete from 表名; -- 删除所有行
delete from 表名 where 列名=; -- 删除满足条件的行
  • 查询数据
select *|列名|表达式 from 表名 where 条件 order by 列名 having 条件 order by asc|desc;

表的约束

  • 定义主键约束 primary key: 不允许为空,不允许重复
  • 定义主键自动增长 auto_increment
  • 定义唯一约束 unique
  • 定义非空约束 not null
  • 定义外键约束 constraint ordersid_FK foreign key(ordersid) references orders(id)
  • 删除主键:alter table tablename drop primary key ;

check约束在MySQL中语法保留,但没有效果。
示例:

reate table myclass (
		id INT(11) primary key auto_increment,
		name varchar(20) unique
	);
create table student (
		id INT(11) primary key auto_increment, 
		name varchar(20) unique,
		passwd varchar(15) not null,
		classid INT(11),  							
		constraint stu_classid_FK foreign key(classid) references myclass(id)

mysql中文乱码问题

两层因素:
1: MySQL自身的设计
2: 操作系统的语言集

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值