我的Linux生涯之Mysql:Day01[Mysql基本使用]

了解提供数据库服务的软件有哪些?
Oracle  access   vf    sql-server   
mysql   DB2   Postgresql    Sybase

商业:Oracle DB2 sql-Server
开源:mysql Postgresql
跨平台:  Oracle DB2 mysql postgresql
跨平台&开源:mysql

数据库服务应用在哪里?
网站 BBS 证券公司 银行等等

Mysql的特点
优点:
功能强大、速度快、性能优越、稳定性强、使用简单、管理方便。
Mysql是一个开放源码的小型关系型数据库
DBMS  (data base manager system)
跨平台、支持AIX/FreeBSD/HP-UX/LINUX/WINDOWS等
使用C/C++编写,支持多种编译器,保证源代码可移植性。
为多种编程语言提供了API,支持Python、Java、Perl、PHP等脚本语言
非关系型数据库:Nosql

应用环境
LNMP/LAMP

搭建数据库服务器
rpm & 源码安装


[root@localhost Server]# rpm -ivh mysql-server-5.0.95-3.el5.x86_64.rpm mysql-devel-5.0.95-3.el5. mysql-5.0.95-3.el5.x86_64.rpm 
[root@localhost Server]# rpm -qa |grep mysql
mysql-5.0.95-3.el5
mysql-server-5.0.95-3.el5
mysql-devel-5.0.95-3.el5  

#启动之后
进程名 mysqld
进程名的所有者和组为mysql
port 3306
协议  tcp
主配置文件 /etc/ym.conf
#所有者和所属组为mysql
#如果是源码安装的话要手动创建mysql用户和组,及更改配置文件权限。
PS:
  源码安装的话要使用cmask构建安装架构,也可以坚持使用之前的configure方式,通过源码包中的BUID/auturun.sh文件生成configure文件。

检测mysqld端口

[root@localhost Server]# netstat -atlunp |grep :3306
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      6832/mysqld   

 

登陆服务器

[root@localhost ~]# mysql --help                    
[root@localhost ~]# mysql -h localhost -u root
#mysql -h [host] -u [username] -p [password]  
#再使用mysql就等于上次执行的mysql命令                                         
Welcome to the MySQL monitor.  Commands end with ; or \g.                     
Your MySQL connection id is 5                                                 
....                                                                          
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> 

               
退出可以使用exit或Crontrol+C。
连接数据库服务----选择一个库----选择一个表----把数据插入到表里

//库----表----字段
sql语句,SQL语句之后要求以";"、"\g"或"\G"结尾。
#结构化查询
查询当前用户登录

mysql> select user()
    -> ;
+----------------+
| user()         |
+----------------+
| root@localhost | 
+----------------+
1 row in set (0.00 sec)  

 

查看当前所在的库

mysql> select database()
    -> ;       //因为没有加";"所以系统认为命令没有结束。
+------------+
| database() |
+------------+
| NULL       | 
+------------+
1 row in set (0.00 sec)  

 

查看库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema | 
| mysql              | 
| test               | 
+--------------------+
3 rows in set (0.00 sec)  

 

选择(打开)一个库
Use mysql;  //进入mysql库
查看当前库里的表

mysql> show tables;
Empty set (0.00 sec)
#表示没有数据。  

默认的三个库(首次启动mysql时自行创建的库)
information_schema //虚拟库,不存在的。它里面的数据是放在物理内存里。
#存放当前已有的库和表的信息。
#这个库可以不加分号。
mysql   //授权库,授权信息。某用户对某库/某表有什么权限。允许某对象连接数据库的权限,默认只能管理员从服务登陆。
test   //公共库,默认是空的。只要登陆到库就可以对该库有任何操作。
重启mysqld之后,如果没有这三个库,就会重新初始化库,重新创建。
但是如果这三个库里的表没了,那么重启也不会创建这些表,并重启失败。
/var/lib/mysql/mysql.sock //mysqld启动时才会这个文件。
那么,这时候就删除这个mysql库这个对应的文件夹,就会重新初始化。

服务器上的库是以文件夹的方式存放在数据库目录下。文件夹名与数据库同名,表是以文件的形式存放在自己所在库对应的文件夹里,
文件名与表名相同。(默认情况下mysql会把一个表的数据用3个文件来保存)
数据库目录:
/var/lib/mysql
#比如说我有个mysql库,这个库里有一个hello表
则/var/lib/mysql/下就会有一个mysql目录,这个目录下有一个hello文件。

[root@localhost ~]# ls /var/lib/mysql/ -l |grep hello
drwx------ 2 mysql mysql     4096 12-30 17:18 hello  


 

Show tables;      //显示当前所在库的表
select  * from db;  加上\G是以行模式显示
#查看db表中的所有字段(记录)

数据库管理
SQL命令不区别分大小写

创建数据库
show databases;  //查看库
create database  databasename; //创建一个库
use  databasename;  //切换库
#创建一个库,/var/lib/mysql下会生成一个 "databasename"这个文件夹,主是mysql,组也是mysql,因为它是由mysql进程创建的。
在/var/lib/mysql下,只要mysql用户有相应的权限,mysql就可以在数据库中查看/写入。
所以,也可以直接mkdir一个目录来创建一个数据库
drop  database  databasename; //删除一个库,这个库内的表也会被删除。
#所以,在删除库之前最好先备份下这个库。
数据库名命令规则:

数据库名具有唯一性;
区别大小写;
不支持纯数字;
SQL命令不能命名数据库;
不支持特殊字符;
#创建数据库时要有标识性,如:我要给APACHE创建一个库,那么就以WEB命名。


表管理
create table 数据库.表名(
<字段名    字段类型>[(宽度)    约束条件,]
#<>内是必须要写的,[]内如果不写则使用默认格式。
字段名    字段类型(宽度)    约束条件,
字段名    字段类型(宽度)    约束条件 //最后一个字段的","就不用写。
#对于字段类型,如要进行数据统计,则都为数值。
每一列要有字段名

Mysql数据类型

1、数值类型 (如:体重、年龄、身高、工资等)
   整数型
         小整数   大整数   极大整数
   浮点型(带小数点的数字)
   单精度 float(n,m)  //n表示数字位数个数,m小数位个数
    float(5,2)  000.00
          float(8,2)  000000.00
   双精度 double(n,m) //n表示数字位数个数,m小数位个数
不执行\c
desc   table_name;  //查看表结构
desc   mysql.user;  //查看mysql库下的user表结构
向表内插入记录
insert into 数据库名.表名(字段名1,字段2,字段名n)values
也可以这样写:
insert into 数据库名.表名(字段名)
values
(字段)
#插入一条,这时候就以;结尾
多条就以“,”分开
#小数位则以四舍五入。
#超出类型的最小值则保存该类型的最小值,最大值则存最大值

unsigned 无符号的默认宽度为3
mysql> create table tl(level tinyint unsigned);
标识该字段为无符号的。 
2、字符串类型(名字  家庭地址)
   定长  char 255字节
   变长  varchar  0~65535字节

create  table studb.tc(
   name char(3),
   age  int(3)
);


name1 char(3)
//存的值只能是3个字符,少于3个则以空格补齐3个字符
name2 varchar(3)
//存的值也是只能存3个字符,不够3个字符时,则存几个字符,开辟几个字符的空间。但是会使用一部分来检测字符位数,占用系统资源。

insert into t3
values
('name',20);//新建  

insert into t3(name) values
数值类型的宽度是显示宽度。
指定宽度是为了节省内存。
int不指定宽度为11
3、日期时间类型(生日 出生年份 注册时间)
   年   日期    小时   日期时间
  year  date    time   datetime/timestamp
  year 年 YYYY
     占用1个字节
     范围 1901~2155
  date 日期
     占用4个字节
     范围 0001-01-01~9999012-31
  time 时间
     范围 0001-01-01~9999-12-31
  datetime 日期时间
     占用8个字节
     范围 1000-01-01 00:00:00
          9999-12-31 00:00:00
  timestamp  日期时间
     占用4个字节
     范围 1970-01-01 00:00:00
          2073-12-31 00:00:00
时间涵数
  now()   
     获取开始执行函数时和系统时间
  sysdate()   
     执行时动态获得系统时间
  sleep(N)
     休眠N秒
  curtime()
      获取系统当前时间
  curdate()
      获取系统当前日期
  month()
 获取指定日间中的月份
  date()
 获取指定日期中的时间
  year()
 获取指定日期中的年份
 给该字段赋值时,两位数值的话,则为1~69----20xx,
      70~99----19xx。
      0则为0000,错误。
#只读取与类型匹配的值

mysql> create table t7(
    -> name varchar(10),
    -> starday year,
    -> workday date,
    -> timework time,
    -> meetting datetime
    -> );  

 


insert into t7 values("jim",now(),now(),now(),now());

inter into t7
values
("tom",1987,19901009,093000,20130110093000);
#按指定格式显示加“”
插入的记录要与格式符合。

cretae table t8(
time1 datetime,
time2 datestamp
);  

 

datestamp 
当不给该字段赋值时,则使用当前系统时间。

只查看某字段
select name,timework, from t7;

4、枚举类型 (字段的值只能在列举的范围内选择)
(性别 爱好)
#字段的值,在例举的值内选
   单选(在列举范围内只能选一个)
   enum("值1","值2","值n")
   多选(在列举范围内选择多个)
   set("值1","值2","值n")
//例:在studb数据库里创建名为stu_info表,保存学生的年龄。

create table t8(
name varchar(10),
age tinyint(2) unsigned
sex enum('boy','gril')
linkes set('book','music','film','football')
); 

 

#linke"
#选项值要加""
#不在字段范围内不会保存该值。
#同一字段内,在范围内及不在范围内排除不在范围内的值
单选时,可以使用列表排列的顺序的值来选择值。
多选时,使用列表排列的顺序选择的值是不固定的。

desc t9;
...
...
null
not noll //不允许为空
default
null  //不给该字段赋值时,使用这个指定的值,表示为空,不区分大小写。
#只有"null"/"NULL"才被认为是空值。

根据所需值,来设定类型。
插入的值要和类型匹配 

 

//插入3条记录,查看表中的记录

 

你可能感兴趣的:(manager,编程语言,源代码,Access,数据库服务)