数据库基本概念
- 数据库的作用
让数据可以持久化保存、具有高可靠性、高可用性、数据能够快速提取 - 关系数据库是由数据表之间的关联组成的
数据表通常是由行和列组成的二维表,每一个数据表分别说明数据库中某一特定的方面或部分的对象及属性
数据表中的行通长叫作记录或者元组。他代表众多具有相同属性的对象中的一个
数据表中的列通常叫做
段或者属性,他代表相应数据库中储存对象的共有属性 - 主键与外键
1)主键 :数据表中的每行记录都是唯一的,而不允许出现完全相同的记录
主键唯一标识表中的行数据,一个主键值对应一行数据。主键有一个或多个字段组成,其值具有唯一性,不允许取空值,一个表中只能有一个主键
2)外键:用于建立和加强两个表数据之间的链接的一列或多列
通过将表中的主键值的一列或多列添加到列一个表中,可创建两个表之间的连接,这个列就称为第二个表中的外键
MySQL的编译安装
MySQL是一个真正的多线程,多用户的sql数据库服务,凭借其高性能,高可靠和易于使用的特性,成为服务器领域中最受欢迎的开源数据库系统
解压MySQL5.6版本安装包
tar zxvf mysql-5.6.26.tar.gz -C /opt
//安装环境包
yum install ncurses-devel autoconf cmake -y
安装功能模块
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DSYSCONFIDIR=/etc \
-DMYSQL_DATADIR=/home/mysql/ \
-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock
make && make install
##覆盖本机的数据库,和前面的配置文件的目录一致
cp support-files/my-default.cnf /etc/my.cnf
##优化服务控制
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chkconfig --add /etc/init.d/mysqld
chkconfig mysqld --level 35 on
##设置环境变量,将启动脚本放到系统中
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
echo $PATH
##添加mysql用户
useradd -s /sbin/nologin mysql
chown -R mysql:mysql /usr/local/mysql/
/usr/local/mysql/scripts/mysql_install_db \
--user=mysql \
--ldata=/var/lib/mysql \
--basedir=/usr/local/mysql \
--datadir=/home/mysql
ln -s /var/lib/mysql/mysql.sock /home/mysql/mysql.sock
#指明工作路径
basedir=/usr/local/mysql
#数据存放位置
datadir=/home/mysql
##启动服务
service mysqld start
##给MySQL用户创建密码
mysqladmin -u root -p password "abc123"
数据库基本操作命令
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
查看数据库中的数据表的信息
//使用USE语句切换到所使用的库
mysql> USE mysql;
mysql> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
28 rows in set (0.01 sec)
查看表的结构
mysql> describe user;
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| File_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Create_user_priv | enum('N','Y') | NO | | N | |
| Event_priv | enum('N','Y') | NO | | N | |
| Trigger_priv | enum('N','Y') | NO | | N | |
| Create_tablespace_priv | enum('N','Y') | NO | | N | |
| ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | |
| ssl_cipher | blob | NO | | NULL | |
| x509_issuer | blob | NO | | NULL | |
| x509_subject | blob | NO | | NULL | |
| max_questions | int(11) unsigned | NO | | 0 | |
| max_updates | int(11) unsigned | NO | | 0 | |
| max_connections | int(11) unsigned | NO | | 0 | |
| max_user_connections | int(11) unsigned | NO | | 0 | |
| plugin | char(64) | YES | | mysql_native_password | |
| authentication_string | text | YES | | NULL | |
| password_expired | enum('N','Y') | NO | | N | |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
43 rows in set (0.00 sec)
创建及删除库和表
创建新的库
mysql> create database school;
Query OK, 1 row affected (0.00 sec)
创建数据表,create table 表名(字段定义…)
mysql> use school
mysql> create table student (id int(4) not null,name char(10) not null,age int(2) not null,primary key(id));
使用insert ,插入新的数据
mysql> insert into student(id,name,age)
-> values(1,"lisi","80");
//查看表
mysql> select * from student
-> ;
+----+------+-----+
| id | name | age |
+----+------+-----+
| 1 | lisi | 80 |
+----+------+-----+
1 row in set (0.00 sec)
使用update ,替换原有数据
mysql> update student set name="css" where id=3
mysql> select * from student;
+----+--------+-----+
| id | name | age |
+----+--------+-----+
| 1 | lisi | 80 |
| 2 | wangwu | 70 |
| 3 | css | 60 |
+----+--------+-----+
3 rows in set (0.00 sec)
使用delete ,删除指定的数据
mysql> delete from student where name="css";
+----+--------+-----+
| id | name | age |
+----+--------+-----+
| 1 | lisi | 80 |
| 2 | wangwu | 70 |
+----+--------+-----+
select语句,用于从指定的表中查询符合条件的数据记录
mysql> select id,name from student where name="lisi";
+----+------+
| id | name |
+----+------+
| 1 | lisi |
+----+------+
1 row in set (0.00 sec)